go陣列與切片

2021-09-11 10:01:42 字數 1764 閱讀 3063

陣列是具有相同唯一型別的一組長度固定的資料項序列,這種型別可以是任意的原始型別,例如整形,字元型或者自定義型別。陣列長度必須是乙個常量的表示式,並且是乙個非負整數。 陣列元素可以用個索引累讀取,陣列長度最大為2gb。宣告格式為:

var identifier [len]type

複製**

例如:

var arr1 [5]int

複製**

每個元素是乙個整型值,陣列在宣告時所有的元素都會被自動初始化為0. 由於索引的存在,遍歷陣列可以使用for或者for-range。 例子:

var arr1 [5]int

for i := 0; i < len(arr1); i++

for i, val := range arr1

//輸出

index = 0, value = 0

index = 1, value = 2

index = 2, value = 4

index = 3, value = 6

index = 4, value = 8

複製**

go中陣列是一種值型別,所以可以通過new()來建立:

var arr1 = new([5]int)

複製**

new建立的陣列型別為*[5]int,這種跟var arr2 [5]int的區別就在於此。

陣列還可以直接使用常量進行初始化:

var a = [3]int

var b = [...]int

var c = [5]int // 前三位有值,後兩位為0

var d = [2]string

var e = [4]string //索引1,2倍賦值,其餘的為空字串

複製**

陣列還可以組成多為陣列,比如[2][3]int之類的。 陣列也可以當初函式引數來進行傳遞,但是對於陣列較大的會消耗很多記憶體。所以一般時候,要不傳遞乙個指標陣列,要不就只傳遞乙個切片。

切片slice是對陣列乙個連續片段的引用,所以說切片是乙個引用型別。這個切片可以是整個陣列,或者是陣列的一部分。 切片的格式宣告為:

var identifier type

//不需要宣告長度

複製**

切片未初始化之前預設為nil,長度為0.切片的初始化格式為:

var slice1 type = arr1[start:end]

複製**

例子:

var arr1 = [5]int

var slice1 = [1, 2] //2

var slice2 = [:] //1,2,3,4,5

var slice3 = [1:] // 2,3,4,5

var slice4 = [:2] // 1,2

複製**

切片可以使用make()來建立

var slice1 type = make(type, len)

// or

slice2 := make(type, len)

複製**

a := int

b := make(int, 10}

n := copy(b, a) // 長度長的被覆蓋

c := int

複製**

go陣列與切片

go陣列 陣列宣告 var variable name size variable type eg var balance 10 float32 陣列初始化 var balance 5 float32 初始化陣列中 中的元素個數不能大於 中的數字。如果忽略 中的數字不設定陣列大小,go 語言會根據元...

GO 陣列與切片

var 變數名 陣列的容量 型別 陣列的容量 型別 var a 4 int 4 int 或者var a 4 int 或者a 4 int 這幾個的結果為 1 2 3 0 接受長度有賦值的長度決定 package main import fmt func main a int 但是無法使用var a i...

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