老师您这边构造struct时都用的是指针的意图是什么?

来源:3-16 api之session处理与实现(下)

sd1700092

2018-06-23

ss:=&defs.SimpleSession{Username: login_name, TTL: ttl}

res:=&defs.VideoInfo{Id: vid, AuthorId: aid, Name:name, DisplayCtime:dct}

请问老师这些对象为什么要用指针呢,直接构造普通对象不也是可以的么。。。?

是一定要用指针,还是用指针有哪些额外的好处,还是只是老师个人的喜好?

写回答

1回答

艾文西

2018-06-23

1. 在go里面,pointer的默认空值是nil,任何type 的struct用pointer创建时都是一样。而普通的non-pointer object则必须要带上类型,这在抽象业务逻辑的时候会带来很多不方便的地方。

2. pointer所占内存是固定的,所以在数据传递的时候对对象的复制拷贝就仅仅是存放pointer的那段空间,等于是把pass by value和pass by reference摆在你的面前让你选更适合的。所以通常情况下都会选择后者。这个和C,C++的设计思路是比较类似的。

2
1
sd1700092
非常感谢!
2018-06-23
共1条回复

Go语言实战流媒体视频网站,高效学习Go高性能开发

从零开始,全面掌握Go语言编码的架构风格和开发Web的关键技能

996 学习 · 268 问题

查看课程