一种是
mm := make(map[int]*struct)
ss := &struct{}
还有一种是
mm := make(map[int]struct)
ss := struct{}
最后
mm[1] = ss
请问一下这几种写法区别是什么呢?性能方面哪个更好啊?
另外我很好奇的是第一种写法里面&struct{}难道是在堆上分配空间吗?
我记得在c语言里面如果在函数里面直接初始化一个结构体是在栈上操作的,如果仅仅把这个结构体的指针存入一个数组里面,等函数返回之后这个结构体就销毁了。
golang为什么我见有人这样写也没事呢?是底层操作方式不一样吗?
map[int]struct {}
不能修改struct内的属性至于性能,没有在实际中测试过,不能下结论。性能和场景有很大关系
&struct{}
这种,在栈还是堆分配,和struct的大小有关还要考虑
逃逸分析
,可以搜一下