issues
search
wtysos11
/
blogWiki
Use to store public paper and organize them.
18
stars
4
forks
source link
golang slices的指针传递
#215
Closed
wtysos11
closed
3 years ago
wtysos11
commented
3 years ago
今天遇到了一个问题,需要给一个结构体中的interface{}传递slice,在纠结要不要传指针
为什么传指针呢?主要是两点:
如果不传指针给interface的话,在赋值的时候会触发额外的转换(因为slice是一个结构体,包含了很多属性)。可以参考
interface
一文,对于interface{}类型,其实现是简化过的eface,而普通的接口则是iface,因此如果将一个超过机器字长的对象(现在一般是64位)的对象赋值给interface{}的时候,会触发额外的内存分配操作,调用runTime.convTslice。这个代价是比较高的,因此尽量要进行避免
slice如果只是传值的话len和cap会只进行复制传递。不过这个跟我的需求没有关系,只是很多函数传值的时候会传slice指针,所以顺带一提。具体可以参考
Golang tips: why pointers to slices are useful and how ignoring them can lead to tricky bugs
今天遇到了一个问题,需要给一个结构体中的interface{}传递slice,在纠结要不要传指针
为什么传指针呢?主要是两点: