在下面的代码中:
type boolValue bool
func newBoolValue(val bool, p *bool) *boolValue {
*p = val
return (*boolValue)(p)
}
最后一行在做什么?
最佳答案
type boolValue bool
func newBoolValue(val bool, p *bool) *boolValue {
*p = val
return (*boolValue)(p)
}
(*boolValue)(p)
正在从*bool
的类型p
到*boolValue
函数的返回值的类型newBoolValue
进行类型转换。 Go需要明确的转换。允许进行转换,因为bool
是boolValue
的基础类型。如果您仅编写
return p
而不进行转换,则编译器错误消息将说明问题:return p
error: cannot use p (type *bool) as type *boolValue in return argument