1.new和make的區(qū)別?
- 相同點:
- new和make都是用來開辟空間的
- 不同點:
- new是初始化一個類型的指針,返回的是類型指針,而里面的值為默認(rèn)初始值,只對值類型有效
- make是針對slice切片,map字典,chan管道初始化,并且返回對應(yīng)的初始值
- 并非返回指針,而是對應(yīng)的類型有效值
2.數(shù)組和切片的區(qū)別
- 相同點:
- 都是一系列用來存放對應(yīng)數(shù)據(jù)的集合
- 不同點:
- 基本:
- 數(shù)組不可改變,定義后只能修改,無法增刪
- 切片可以進行后續(xù)操作改變
- 語法定義:
- 數(shù)組的語法為: var arr [10]int
- 切片的語法為: var arr []int
- 類型:
- 數(shù)組:值類型,進行函數(shù)傳遞值時,通常是值傳遞,拷貝一份后進行操作
- 切片:引用類型,函數(shù)操作時,針對傳遞指針進行操作
- 空間大?。?
- 數(shù)組:數(shù)組大小為初始值時,默認(rèn)的長度以及類型進行開辟空間
- 切片:切片大小默認(rèn)為24。這是因為切片的結(jié)構(gòu)體只存放三個3個變量
- 指針,長度,容量
- 切片可以進行增刪值,當(dāng)超出現(xiàn)有容量后,會在1024容量內(nèi)進行翻倍,超出后則每次增加1/4
- 基本: