老师您这边构造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回答
-
1. 在go里面,pointer的默认空值是nil,任何type 的struct用pointer创建时都是一样。而普通的non-pointer object则必须要带上类型,这在抽象业务逻辑的时候会带来很多不方便的地方。
2. pointer所占内存是固定的,所以在数据传递的时候对对象的复制拷贝就仅仅是存放pointer的那段空间,等于是把pass by value和pass by reference摆在你的面前让你选更适合的。所以通常情况下都会选择后者。这个和C,C++的设计思路是比较类似的。
212018-06-23
相似问题