Go Slice 使用中的小陷阱

2022-06-29 23:15:12 字數 633 閱讀 7056

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...