为了账号安全,请及时绑定邮箱和手机立即绑定

[]byte("")的默认cap是多少

[]byte("")的默认cap是多少

函数式编程 2019-05-21 09:19:23
s:=[]byte("")fmt.Println(cap(s))//32buts:=[]byte("")fmt.Println(cap(s))//0fmt.Println(s)Isthecompilerdoessomeoptimizations?
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

这个问题很有意思,从结果上来看,编译器肯定是对栈上分配的临时数组变量做了优化(临时分配的固定大小的容量),若一但操作了该数组变量,那么会根据实际使用情况更新数组变量的容量大小。
此外,如果是将该数组定义成包内部变量或者全局变量,这个cap的结果也会是0,因为它会在堆上进行分配。
我也仅仅是根据测试结果进行的猜测,具体内部实现细节可能需要大牛来科普以下。
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 494 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信