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

s:=[]byte("")
fmt.Println(cap(s))//32
but
s:=[]byte("")
fmt.Println(cap(s))//0
fmt.Println(s)
Isthecompilerdoessomeoptimizations?
函数式编程
浏览 495回答 2
2回答

繁花如伊

这个问题很有意思,从结果上来看,编译器肯定是对栈上分配的临时数组变量做了优化(临时分配的固定大小的容量),若一但操作了该数组变量,那么会根据实际使用情况更新数组变量的容量大小。此外,如果是将该数组定义成包内部变量或者全局变量,这个cap的结果也会是0,因为它会在堆上进行分配。我也仅仅是根据测试结果进行的猜测,具体内部实现细节可能需要大牛来科普以下。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript