Go語言 陣列

2022-05-06 22:18:11 字數 3145 閱讀 6136

本文主要介紹go語言中陣列(array)及它的基本使用。

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

//

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

var a [3]int

var 陣列變數名 [元素數量]資料型別

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

var a [3]int

var b [4]int

a = 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()

}}

輸出:

北京    上海    

廣州 深圳

成都 重慶

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

//

支援的寫法

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表示陣列指標 。

求陣列[1, 3, 5, 7, 8]所有元素的和

找出陣列中和為指定值的兩個元素的下標,比如從陣列[1, 3, 5, 7, 8]中找出和為8的兩個元素的下標分別為(0,3)(1,2)

Go語言 陣列

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

GO語言 陣列

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

go語言 陣列

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