为什么会产生错误?除了 with 指针之外,它与 int 相同。
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
分配给 *int
。这是不匹配的,你不能这样做,因为这两种类型不一样。
int
是保存整数值的类型(例如 0
、100
、-55
...), *int
是一种将地址保存到内存中int
值的类型(例如地址0x00124215
,... )。因此,您可以看到两者实际上并不代表相同的类型。
如果您仍想在一行中完成此操作,则必须定义一个接受值并返回指针的函数:
func GetIntPointer(value int) *int {
return &value
}
yesVar := Gim{ Active: GetIntPointer(1)}
关于go - 无法在字段值中使用 1(int 类型)作为 *int 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64655943/