首先我們應該知道go沒有引用型別只有值型別。
那麼切片可以理解為乙個指標型別,切片的引數傳遞就是指標的值傳遞
sli := int
這個涉及到追加之後的擴容問題了。有點類似於c++ vector的擴容過程
初始化乙個大記憶體,但是不生成元素
sli := make(int, 0, 1000)/// len =0 cap= 1000
初始化乙個固定長度的切片
sli := make(int, 10) ///長度10 cap 10 內容全是0
初始化另乙個切片,相當於指標賦值操作,指向的記憶體是一致的
sli1 := sli /// 兩者指向的記憶體一致
/// 刪除下表為 i 的元素
/// 刪除頭元素
sli = sli[1:]
/// 刪除尾元素
sli = sli[:len(sli) -1]
sli = nil
ele := sli[0]
ele := sli[len(sli) - 1]
var data string = nil
if len(data) <= 0
var data *string = nil
if len(data) <= 0
data := int
data2 := make(int, len(data))
copy(data2, data)
Go語言的切片
go 語言切片是對陣列的抽象。go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用,go中提供了一種靈活,功能強悍的內建型別切片 動態陣列 與陣列相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。在一定程度上可以看做乙個動態陣列 切片的方式 1.var identifier...
go 常用操作
func struct2map obj inte ce map string inte ce for i 0 i t.numfield i return data 注意 如果報錯 handler crashed with error reflect numfield of non struct ty...
go陣列 切片
陣列 陣列指標 fmt.println 陣列指標 i int var p 10 int i fmt.println p fmt.println p x,y 1,2 j int fmt.println j k 2 int l 2 int fmt.println k l 指向陣列的指標 m new 5 ...