在下面的代码中:

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需要明确的转换。允许进行转换,因为boolboolValue的基础类型。

如果您仅编写return p而不进行转换,则编译器错误消息将说明问题:
return p

error: cannot use p (type *bool) as type *boolValue in return argument

10-08 09:23