陣列是乙個由固定長度的特定型別元素組成的序列,乙個陣列可以由零個或多個元素組成。因為陣列的長度是固定的,所以在go語言中很少直接使用陣列。
和陣列對應的型別是 slice(切片),slice 是可以增長和收縮的動態序列,功能也更靈活,但是想要理解 slice 工作原理的話需要先理解陣列,所以本節主要為大家講解陣列的使用,至於 slice(切片)將在《go語言切片》一節中為大家講解。
go語言陣列的宣告
陣列的宣告語法如下:
var 陣列變數名 [元素數量]type
語法說明如下所示:
陣列變數名:陣列宣告及使用時的變數名。
元素數量:陣列的元素數量,可以是乙個表示式,但最終通過編譯期計算的結果必須是整型數值,元素數量不能含有到執行時才能確認大小的數值。
type:可以是任意基本型別,包括陣列本身,型別為陣列本身時,可以實現多維陣列。
陣列的每個元素都可以通過索引下標來訪問,索引下標的範圍是從 0 開始到陣列長度減 1 的位置,內建函式 len() 可以返回陣列中元素的個數。
var a [3]int // 定義三個整數的陣列
fmt.println(a[0]) // 列印第乙個元素
fmt.println(a[len(a)-1]) // 列印最後乙個元素
// 列印索引和元素
for i, v := range a
var r [3]int = [3]int
fmt.println(r[2]) // "0"
在陣列的定義中,如果在陣列長度的位置出現「...」省略號,則表示陣列的長度是根據初始化值的個數來計算,因此,上面陣列 q 的定義可以簡化為:
q := [...]int
fmt.printf("%t\n", q) // "[3]int"
陣列的長度是陣列型別的乙個組成部分,因此 [3]int 和 [4]int 是兩種不同的陣列型別,陣列的長度必須是常量表示式,因為陣列的長度需要在編譯階段確定。
q := [3]int
q = [4]int // 編譯錯誤:無法將 [4]int 賦給 [3]int
比較兩個陣列是否相等
如果兩個陣列型別相同(包括陣列的長度,陣列中元素的型別)的情況下,我們可以直接通過較運算子(==和!=)來判斷兩個陣列是否相等,只有當兩個陣列的所有元素都是相等的時候陣列才是相等的,不能比較兩個型別不同的陣列,否則程式將無法完成編譯。
a := [2]int
b := [...]int
c := [2]int
fmt.println(a == b, a == c, b == c) // "true false false"
d := [3]int
fmt.println(a == d) // 編譯錯誤:無法比較 [2]int == [3]int
遍歷陣列——訪問每乙個陣列元素
遍歷陣列也和遍歷切片類似,**如下所示:
var team [3]string
team[0] = "hammer"
team[1] = "soldier"
team[2] = "mum"
for k, v := range team {
fmt.println(k, v)
**輸出結果:
0 hammer
1 soldier
2 mum
**說明如下:
第 6 行,使用 for 迴圈,遍歷 team 陣列,遍歷出的鍵 k 為陣列的索引,值 v 為陣列的每個元素值。
第 7 行,將每個鍵值列印出來。
linq 查詢 過濾資料中某個值是否在陣列中
條件如下 表a 公司表 id int,pk name nvarchar 255 表b 使用者表 id int,pk name nvarchar 255 companyid int 求 表b中companyid 在陣列中的所有資料。先建立乙個int型陣列,個人喜歡先用list再轉。如下 csharp ...
php在陣列中判斷某個值是否存在
php在陣列中查詢指定值是否存在的方法有很多,記得很久以前我一直都是傻傻的用foreach迴圈來查詢的,下面我主要分享一下用php內建的三個陣列函式來查詢指定值是否存在於陣列中,這三個陣列分別是 in array array search array key exists 首先分別介紹一下各自的定義...
js如何判斷某個值是否在陣列中
很簡單,定義乙個陣列,判斷下就得了。var arraylist 1,2,3,4 arraylist indexof 2 返回0 arraylist indexof 6 返回1 注意indexof是區分大小寫的,字母o必需大寫,不然是會報錯的,另外,該方法在某些版本的ie中是不起作用的,因此在使用之前...