go語言查詢某個值是否在陣列中 Go語言陣列詳解

2021-10-17 06:27:21 字數 1743 閱讀 9813

陣列是乙個由固定長度的特定型別元素組成的序列,乙個陣列可以由零個或多個元素組成。因為陣列的長度是固定的,所以在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中是不起作用的,因此在使用之前...