Go學習 陣列

2021-08-19 21:45:56 字數 1787 閱讀 1285

package main

import (

"fmt"

)func main()

//定長定義初始值

b := [2]int

//不定長具有初始值

c := [...]int

//new得到陣列引用

d := new([2]int)

fmt.println(a, b, c, d)

}

執行結果

chenlilong@desktop-b9aluuj mingw64 /d/gopath/src

$ go run main.go

[0 0] [1 2] [1 2] &[0 0]

1、定長陣列初始化,不一定初始化所有值,未被初始化的值,使用預設值代替(如int使用0)

2、可以使用下標的方式進行初始化

3、不定長陣列是要用... ,注意區別陣列與slice的不定長區別(陣列和slice的記憶體結構不一樣)

4、new初始化陣列的是引用,但是仍然可以用下標進行賦值

5、new初始化的陣列必須指定長度,也不定進行賦值

6、陣列的可以進行==比較,比較型別與長度,不是比較位址

7、陣列的傳遞是值傳遞

8、可以使用range遍歷(注意值傳遞)

9、長度和型別是陣列的一部分,不同長度和不同型別不能進行比較,例如[2]int{} 不能和 [3]int

10、陣列初始化以後就是定長的,例如 [...]int 可以和 [2]int 比較

11、可以使用len 和 cap

package main

import (

"fmt"

)func main()

//使用下標方式初始化

b := [3]int

//區別slice

c1 := [...]int //這是不定長陣列

c2 := int //這是slice

//new

d := new([2]int)

d[0] = 1

// d := new([2]int)

// d := new([...]int)

fmt.println(a, b, c1, c2, d)

//陣列的比較

e1 := [2]int{}

e2 := [...]int

fmt.println(e1 == e2)

//陣列的值傳遞

f1 := [2]int{}

var f2 = f1

fmt.println(f1 == f2)

f1[0] = 1

fmt.println(f1, f2)

fmt.println(f1 == f2)

//可以使用len,cap

fmt.println(len(a), cap(a))

//比較

g1 := [...]int

g2 := [2]int

fmt.println(g1 == g2)

}

執行結果

chenlilong@desktop-b9aluuj mingw64 /d/gopath/src

$ go run main.go

[1 0 0] [0 1 0] [1 2 3] [1 2 3] &[1 0]

true

true

[1 0] [0 0]

false

3 3true

Go語言學習 陣列

陣列是go語言程式設計中最常用的資料結構之一。顧名思義,陣列就是指一系列同一型別資料的集合。陣列中包含的每個資料被稱為陣列元素 element 乙個陣列包含的元素個數被稱為陣列的長度。在go語言中陣列是乙個值型別 value type 是真真實實的陣列,而不是乙個指向陣列記憶體起始位置的指標,也不能...

Go 學習筆記(10) 陣列

陣列是同一型別元素的集合,陣列的型別字面量由兩部分構成 陣列的長度 元素的型別。type mynumbers 3 int 複製 建立陣列時,如果只宣告不賦值,其中各元素均為元素型別的零值 或稱預設值 宣告數時賦值 var a 3 int 0 0 0 a 0 10 a 1 20 a 2 30 10 2...

GO語言學習 陣列

定義乙個陣列var 陣列變數名 元素數量 元素型別 var a 3 int定義乙個int陣列 長度為 3 fmt.println a 輸出結果為 0 0 0 在宣告陣列時,如果沒有對陣列進行賦值 則會為該型別的預設值 int 型別為 0 string型別為 在定義的時候賦值var a 3 int 長...