【发布时间】:2019-10-21 12:46:50
【问题描述】:
我是 Go 新手。我了解定义新类型的基础知识,如下所示:
type MyCondition bool
我知道这意味着每当我声明一个函数采用MyCondition 的实例时,它就不能是bool,这很好。但是,我想将MyCondition 的实例视为bool,但我发现我不能总是这样做:
package main
import (
"fmt"
)
type MyCondition bool
func main() {
var b1 MyCondition
var b2 = true
fmt.Println(!b1) // OK!
fmt.Println(b1 || b1) // OK
fmt.Println(b1 || b2)
}
这不编译,抛出:
./prog.go:13:17: invalid operation: b1 || b2 (mismatched types MyCondition and bool)
据我观察,MyCondition 本身就是一个布尔值,但是当我将它与实际的bool“混合”时就会出现问题。
问题是:
- 为什么会这样?
- 对此有什么解决方法?我真的很想把它当作一个 bool 来处理,而不需要多态地进行强制转换。
【问题讨论】:
标签: go types polymorphism