十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
指针的基本意义是存储某些值所在的内存地址。
站在用户的角度思考问题,与客户深入沟通,找到栖霞网站设计与栖霞网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、成都网站设计、企业官网、英文网站、手机端网站、网站推广、域名申请、网站空间、企业邮箱。业务覆盖栖霞地区。在 Golang 中,虽然不是所有的值都可以取出地址(尽管他们也存储在内存中,比如 const),但所有的变量必然可以取出地址。
变量,就是一块内存区域中存储的值[1]。不仅我们熟悉的 var x int 中的 x 是变量,一个比较复杂的表达式也可以表示一个变量,比如sliceA[0],mapB["key"],以及structC.FieldD。也就是说,他们都可以有自己的指针。
当我们需要修改结构体的变量内容的时候,方法传入的结构体变量参数需要使用指针,也就是结构体的地址,需要修改map中的架构体的变量的时候也需要使用结构体地址作为map的value。
Go 可以直接新建 struct 的指针
在 golang 中,我们可以通过ptr := &A{Value: 1},就得到了一个结构体 A 值的指针;但在 C 中就无法通过单独的赋值语句得到:
typedef struct { int value; } A;A *ptr1; // 无法给 ptr 所指的值赋值 A *ptr2 = &A{1}; // 没有这样的语法 A a = {1}; // 再通过 &a 可以得到指针
如果说这个区别只是语法上的表象,另外一个区别可能就是事关 bug 的区别了。
2. Go 中可以安全地返回局部变量的指针
在上面的 C 代码举例中,我们确实可以声明一些变量,但如果这些声明是在一个方法内完成的,比如:
A *init(){ A *ptr; return ptr;}
或者
A *init(){ A a; return &a;}
那么,这个声明出来的局部变量,是一种自动变量(automatic variable[3]),原方法,也就是 init() 方法,结束后,这些自动变量就“消失”了。
以上就是golang 指针怎么用的详细内容,更多请关注创新互联成都网站设计公司其它相关文章!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。