陣列是同一種資料型別元素的集合。 在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()
}}
輸出:
北京 上海
廣州 深圳
成都 重慶
注意:多維陣列只有第一層可以使用...
來讓編譯器推導陣列長度。例如:
//支援的寫法
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
表示陣列指標 。
8 Go語言 指標型別
1.實際用法package main import fmt func main 執行結果 0xc042052088 0xc0420461b02.從指標獲取指標指向的值 在對普通變數使用 操作符取位址獲得這個變數的指標後,可以對指標使用 操作,也就是指標取值 package main import f...
Go語言基礎之陣列
本文主要介紹陣列 array 及它的基本使用。陣列是同一種資料型別元素的集合。在go語言中,陣列從宣告時就確定,使用時可以修改陣列成員,但是陣列大小不可變化。基本語法 定義乙個長度為3元素型別為int的陣列a var a 3 int var 陣列變數名 元素數量 t 比如 var a 5 int,陣...
Go語言基礎之陣列
我的總結 乙個變數,指向一塊連續的,具有長度的,並且是相同型別的一塊記憶體。var 變數名 元素個數 元素型別示例 package main func main 注 var 變數名 元素個數 元素型別 等同於 var 變數名 變數型別 所以var name1 3 int var name2 4 in...