go中的切片有兩個特性:
type slice struct
包括從切片和陣列派生出來的切片都是公用乙個底層陣列的
make構造出來的切片,已經預先填充了len個零值元素了。
總而言之,對切片的更改都會影響到底層的陣列結構,因此需要慎重。
動手做個實驗:
package main
import (
"fmt"
)func double(s int, count int)
for i, v := range s
}func main()
for i:=0; i < 5; i++
fmt.println("主函式內切片的長度為", len(s), " 容量為", cap(s))
fmt.println(s)
double(s, 1)
fmt.println(s)
// 新增超過切片容量的元素後,double函式內切片底層的陣列重新分配了,和主函式外的切片的底層陣列不是同乙個了,因此對其修改不會影響到主函式切片的數值
double(s, 10)
fmt.println(s)
}
Go slice切片的「陷阱」和本質
總結了go語言中切片slice的特殊性和使用時的注意事項。個人理解,不足之處歡迎指出。slice 切片,是go語言中一種常用的資料結構,基於陣列構建,表示相同資料型別的集合。go中陣列型別表示固定長度的相同型別的資料的集合,資料在記憶體中連續儲存,可以通過下標索引,但是又有特殊的地方 所以go語言中...
Go slice 切片的「陷阱」和本質
總結了go語言中切片slice的特殊性和使用時的注意事項。個人理解,不足之處歡迎指出。slice 切片,是go語言中一種常用的資料結構,基於陣列構建,表示相同資料型別的集合。go中陣列型別表示固定長度的相同型別的資料的集合,資料在記憶體中連續儲存,可以通過下標索引,但是又有特殊的地方 所以go語言中...
結構體指標使用時的小陷阱
最近,使用結構體指標時,偶遇bug,後弄清楚了原因,在此記錄一下,防止以後重蹈覆轍,也提醒一下可能和我遇到一樣問題的夥伴們 為了防止錯誤的樣例先入為主,在這裡,先列出正確的開啟方式 typedef struct tnode tree 錯誤的栗子 typedef struct tnode tree w...