1
type Boolean bool
func takes_bool(b bool) {
fmt.Printf("%t\n", b)
}
func takes_boolean(b Boolean) {
fmt.Printf("%t\n", b)
}
的可轉讓的功能參數。當我調用以下:
takes_bool(Boolean(false))
takes_bool(Boolean(true))
我得到:
cannot use Boolean(false) (type Boolean) as type bool in function argument
cannot use Boolean(true) (type Boolean) as type bool in function argument
上可轉讓的規則似乎不不允許即至少有一個不是的命名類型都具有相同的基本類型:
type Boolean bool
vs
bool
函數'takes_boolean'既可以接受'true'也可以接受'false'。所以現在你有兩個命名類型。 – canadadry
'bool'和'Boolean'都是命名類型。然而,裸字'true'和'false'是無類型的常量字面值,屬於http://golang.org/ref/spec#Assignability中的最後一個要點。另請參見http://golang.org/ref/spec#Constants – Evan