go語言 陣列

2021-10-25 10:57:18 字數 3272 閱讀 6058

陣列是同一種資料型別元素的集合。 在go語言中,陣列從宣告時就確定,使用時可以修改陣列成員,但是陣列大小不可變化。 基本語法:

// 定義乙個長度為3元素型別為int的陣列a

var a [3]

int

var 陣列變數名 [元素數量]t
比如:var a [5]int, 陣列的長度必須是常量,並且長度是陣列型別的一部分。一旦定義,長度不能變。[5]int[10]int是不同的型別。

var a [3]

intvar b [4]

inta = b //不可以這樣做,因為此時a和b是不同的型別

陣列可以通過下標進行訪問,下標是從0開始,最後乙個元素下標是:len-1,訪問越界(下標在合法範圍之外),則觸發訪問越界,會panic。

陣列的初始化也有很多方式。

初始化陣列時可以使用初始化列表來設定陣列元素的值。

func

main()

//使用指定的初始值完成初始化

var cityarray =[3

]string

//使用指定的初始值完成初始化

fmt.

println

(testarray)

//[0 0 0]

fmt.

println

(numarray)

//[1 2 0]

fmt.

println

(cityarray)

//[北京 上海 深圳]

}

按照上面的方法每次都要確保提供的初始值和陣列長度一致,一般情況下我們可以讓編譯器根據初始值的個數自行推斷陣列的長度,例如:

func

main()

var cityarray =

[...

]string

fmt.

println

(testarray)

//[0 0 0]

fmt.

println

(numarray)

//[1 2]

fmt.

printf

("type of numarray:%t\n"

, numarray)

//type of numarray:[2]int

fmt.

println

(cityarray)

//[北京 上海 深圳]

fmt.

printf

("type of cityarray:%t\n"

, cityarray)

//type of cityarray:[3]string

}

我們還可以使用指定索引值的方式來初始化陣列,例如:

func

main()

fmt.

println

(a)// [0 1 0 5]

fmt.

printf

("type of a:%t\n"

, a)

//type of a:[4]int

}

遍歷陣列a有以下兩種方法:

func

main()

// 方法1:for迴圈遍歷

for i :=

0; i <

len(a)

; i++

// 方法2:for range遍歷

for index, value :=

range a

}

go語言是支援多維陣列的,我們這裡以二維陣列為例(陣列中又巢狀陣列)。

func

main()

,,,}

fmt.

println

(a)//[[北京 上海] [廣州 深圳] [成都 重慶]]

fmt.

println

(a[2][

1])//支援索引取值:重慶

}

func

main()

,,,}

for_

, v1 :=

range a

fmt.

println()

}for i :=

0; i <

len(a)

; i++

fmt.

println()

}}

輸出:

北京	上海	

廣州 深圳

成都 重慶

注意:多維陣列只有第一層可以使用...來讓編譯器推導陣列長度。例如:

//支援的寫法

a :=

[...][

2]string,,

,}//不支援多維陣列的內層使用...

b :=[3

][...]

string,,

,}

陣列是值型別,賦值和傳參會複製整個陣列。因此改變副本的值,不會改變本身的值。

func

modifyarray

(x [3]

int)

func

modifyarray2

(x [3]

[2]int

)func

main()

modifyarray

(a)//在modify中修改的是a的副本x

fmt.

println

(a)//[10 20 30]

b :=[3

][2]

int,,,

}modifyarray2

(b)//在modify中修改的是b的副本x

fmt.

println

(b)//[[1 1] [1 1] [1 1]]

}

注意:

陣列支援 「==「、」!=」 操作符,因為記憶體總是被初始化過的。

[n]*t表示指標陣列,*[n]t表示陣列指標 。

Go語言 陣列

定義陣列的長度和型別,預設使用型別的零值進行初始化 var a1 10 int 不指定陣列的長度,指定型別,缺省會使用初始值設定陣列的長度 初始值有幾個,陣列長度就是幾 var a2 int 指定陣列的長度和型別,同時初始化全部或者部分的數字,元素會從前到後順序初始化 初始化時物件的數量不能大於陣列...

GO語言 陣列

陣列是同一種資料型別元素的集合。在go語言中,陣列從宣告時就確定,使用時可以修改陣列成員,但是陣列大小不可變化。基本語法 定義乙個長度為3元素型別為int的陣列a var a 3 intvar 陣列變數名 元素數量 t比如 var a 5 int,陣列的長度必須是常量,並且長度是陣列型別的一部分。一...

Go語言陣列

目錄陣列是具有相同唯一型別的一組已編號且長度固定的資料項序列 這是一種同構的資料結構 這種型別可以是任意的原始型別例如整形 字串或者自定義型別 結構體 介面 陣列長度必須是乙個常量表示式,並且必須是乙個非負整數,陣列下標是從0開始的,並且陣列的長度是固定不可變的,陣列中元素的位址是連續的。陣列長度也...