go 語言切片要點

2021-08-18 06:42:30 字數 947 閱讀 7870

字面量宣告: slice := int

make宣告: slice := make(string, 5)  長度5容量5, slice := make(string, 5, 8) 長度5容量8

使用索引宣告: slice := int

newslice := slice[1:3]

newslice2 := slice[1:3:4] 第三個書表明容量位置

偽**:

type slice struct

slice := int

newslice := slice[1:3:3]

// 長度容量一致

和stl的vector實現一樣,切片容量不夠時,會開闢2倍容量的新切片,然後執行內容複製。當切片容量大於1000時,會開闢1.25倍容量的新切片。

長度容量都是0,指標nil

slice := make(int, 0)

slice := int{}

對容量是k的切片slice[i:j]

長度: j - i

容量:   k - 1

for index, value := range slice

index返回索引,value返回值的

copy副本,不是引用

。切片以值的方式傳遞,

但是底層資料是同乙份

。和陣列不同,陣列在函式引數中傳遞時,

會複製整份資料

。所以傳陣列效率低,傳切片效率高。

對映是無序的,即使使用同樣的順序儲存鍵值對,每次迭代的時候,順序也可能不同。

對映使用雜湊函式,將雜湊鍵分散到不同的桶中,在桶中儲存資料。每次查詢線hash到對應的桶中,再進行搜尋。

dict := map[string] int

value, exists := colors["blue"]

if exists

當key不存在時,返回的value是相應的空值

Go語言切片

go語言切片 go語言切片是對陣列的抽象 go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用,go中提供了一種靈活,功能強悍的內建型別切片 動態陣列 與陣列相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。宣告乙個未指定大小的陣列來定義切片 var identifier ...

go語言 切片

一 概述 low 陣列下標的起點 high 陣列下標的結束點 不包括此點 arr low arr high len 長度 high low cap 容量 max low 二 切片的長度與容量 package main import fmt func main slice arr 0 3 5 fmt....

Go語言 切片

因為陣列的長度是固定的並且陣列長度屬於型別的一部分,所以陣列有很多的侷限性。例如 func arraysum x 3 int int return sum 這個求和函式只能接受 3 int型別,其他的都不支援。再比如,a 3 int陣列a中已經有三個元素了,我們不能再繼續往陣列a中新增新元素了。切片...