为什么会产生错误?一样的int
除了 with 指针。
type Gim struct { Active: *int }
yesVar := Gim{ Active: 1}
// error
// Cannot use 1 (type int) as type *int in field value
虽然当我这样使用它时
type Gim struct { Active: *int }
active := 1
yesVar := Gim{ Active: &active}
// compiles
它编译并且不会产生错误,有什么解释吗?
在第二个示例中,您分配一个整数指针 (*int
) 到相同类型的字段 (*int
)。但是,在第一个中,您分配了一个int
to *int
。这是不匹配的,你不能这样做,因为这两种类型不一样。int
是一种保存整数值的类型(例如0
, 100
, -55
, ...), 和*int
是一个类型地址 to int
内存中的值(例如地址0x00124215
,...)。因此,您可以看到两者实际上并不代表相同的类型。
如果您仍然想在一行中执行此操作,则必须定义一个接受值并返回指针的函数:
func GetIntPointer(value int) *int {
return &value
}
yesVar := Gim{ Active: GetIntPointer(1)}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)