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