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