登录
首页 >  Golang >  Go问答

无法将整数类型的值 1 用作指针类型

来源:stackoverflow

时间:2024-02-28 11:36:24 465浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《无法将整数类型的值 1 用作指针类型》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

为什么会产生错误?除了 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 是保存整数值的类型(例如 0100-55,...),而 *int 是保存内存中 int 值的地址的类型(例如地址 0x00124215, ...)。因此,您可以看到两者实际上并不代表相同的类型。

如果您仍想在一行中完成此操作,则必须定义一个接受值并返回指针的函数:

func GetIntPointer(value int) *int {
    return &value
}

yesVar := Gim{ Active: GetIntPointer(1)}

理论要掌握,实操不能落!以上关于《无法将整数类型的值 1 用作指针类型》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>