當前位置:
首頁 >
go中make、new和直接var的区别
發(fā)布時間:2025/3/11
19
豆豆
生活随笔
收集整理的這篇文章主要介紹了
go中make、new和直接var的区别
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 直接var
- make
- new
- 小結
直接var
func main(){var sli []intfmt.Println(sli) // 打印結果為:[]fmt.Println(len(sli)) // 打印結果為:0fmt.Println(cap(sli)) // 打印結果為:0fmt.Println(sli[0]) // panic: index out of range [0] with length 0 }此時sli只分配了這個切片結構,還沒有分配底層數(shù)組,存儲元素個數(shù)為0,容量也為0
make
var sli []int = make([]int,2,5)此時make不僅會為sli分配這個切片結構,還會開辟一段內(nèi)存作為sli的底層數(shù)組,并將底層數(shù)組的值初始化為整型的默認值0
向sli中新增一個元素3
注意:make只能用來為slice、map、channel類型分配內(nèi)存和初始化一個對象
new
func main(){sli := new([]int)fmt.Println(*sli) // 打印為:[]fmt.Println(len(*sli)) // 打印為:0fmt.Println(cap(*sli)) // 打印為:0fmt.Println((*sli)[0]) // panic: index out of range [0] with length 0 }此時new會為sli指向一個沒有分配底層數(shù)組的切片結構,存儲元素個數(shù)和容量都為0
小結
總結
以上是生活随笔為你收集整理的go中make、new和直接var的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2014年计算机初级应用考试是,2014
- 下一篇: redis rua解决库存问题_【150