go切片的常用操作

2021-10-03 02:34:47 字數 885 閱讀 3107

首先我們應該知道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 ...