唐山住房和城鄉(xiāng)建設(shè)廳網(wǎng)站谷歌外貿(mào)seo
前言
大家好,我是沐風(fēng)曉月,本文go語言入門-掌握go語言函數(shù)收錄于《go語言學(xué)習(xí)專欄》專欄,此專欄帶你從零開始學(xué)習(xí)go語言,持續(xù)更新中,歡迎點贊收藏。
🏠個人主頁:我是沐風(fēng)曉月
🧑個人簡介:大家好,我是沐風(fēng)曉月,雙一流院校計算機專業(yè),阿里云博客專家
😉😉 💕 座右銘:先努力成長自己,再幫助更多的人,一起加油進步
🍺🍺🍺💕歡迎大家:這里是CSDN,我總結(jié)知識的地方,喜歡的話請三連,有問題請私信
文章目錄
- 前言
- 一. 數(shù)組的介紹
- 1.1 什么是數(shù)組?
- 1.2 數(shù)據(jù)的聲明及語法
- 二. 數(shù)組的初始化
- 2.1 指定長度和初始值
- 2.2 不指定數(shù)組長度來初始化數(shù)組
- 2.3 指定長度,通過索引值來初始化
- 2.4 不指定長度,通過索引值進行初始化
- 2.5 數(shù)組的訪問
- 三. 數(shù)組的比較
- 3.1 數(shù)據(jù)類型相同,但長度不同
- 3.2 數(shù)據(jù)類型相同且長度相同
- 四. 數(shù)組的遍歷
- 五 . 二維數(shù)組
- 5.1 二維數(shù)組的介紹
- 5.2 二維數(shù)組的遍歷
- 總結(jié)

一. 數(shù)組的介紹
1.1 什么是數(shù)組?
數(shù)組是具有相同唯一類型的一組已編號且長度固定的數(shù)據(jù)項序列,這種類型可以是任意的原始類型例如整形、字符串或者自定義類型。
- 數(shù)組可以由0個元素或者多個元素組成,但不能增長和收縮。
- go語言中,數(shù)組是一種值類型,元素可以被修改。
- 數(shù)組的元素索引從0開始
1.2 數(shù)據(jù)的聲明及語法
Go 語言數(shù)組聲明需要指定元素類型及元素個數(shù),語法格式如下:
var varName [SIZE]var Type
語法說明如下所示:
- varName(數(shù)組變量名):數(shù)組聲明及使用時的變量名。
- SIZE(元素數(shù)量):數(shù)組的元素數(shù)量,可以是一個表達式,但最終通過編譯期計算的結(jié)果必須是整型數(shù)值,元素數(shù)量 不能含有到運行時才能確認大小的數(shù)值。
- Type(數(shù)組類型):可以是任意基本類型,包括數(shù)組本身,類型為數(shù)組本身時,可以實現(xiàn)多維數(shù)組。
舉例: 定義一個數(shù)組mufeng,長度為10,類型為float32
var mufeng [10] float32
二. 數(shù)組的初始化
2.1 指定長度和初始值
指定長度和初始化值,初始化數(shù)組中 {} 中的元素個數(shù)不能大于 [] 中的數(shù)字:
package mainimport "fmt"func main() {var mufeng = [5]float32{1.0, 2.0, 3.0, 4.0, 5.0}fmt.Println(mufeng)
}
這里要注意,初始值的元素之間需要用,
隔開,當(dāng)[5]
中指定為5個,后面的大括號就不應(yīng)該能大于5,但可以小于5. 小于5的時候,會有默認值補全。 比如數(shù)字類型,默認值就是0.
package mainimport "fmt"func main() {var mufeng = [5]float32{1.0, 2.0, 3.0, 4.0}fmt.Println(mufeng[4]) // 結(jié)果就為0
}
可以看到當(dāng)我們獲取mufeng下標(biāo)為4的值的時候,結(jié)果就是0.
2.2 不指定數(shù)組長度來初始化數(shù)組
當(dāng)我們不指定長度的時候,也就是[]
中不寫入內(nèi)容,GO語言默認會根據(jù)元素的個數(shù)來設(shè)置數(shù)組的大小。
package mainimport "fmt"func main() {var mufeng = []int{1, 2, 3, 4}fmt.Println(mufeng)}
2.3 指定長度,通過索引值來初始化
此時我們使用索引值來初始化,1:1
就表示,下標(biāo)為1的元素,初始值為1. 下標(biāo)默認初始值為0,我們看下面的代碼案例:
package mainimport "fmt"func main() {mufeng := [4]int{1:1, 2: 2}fmt.Println(mufeng)//執(zhí)行結(jié)果為[0 1 2 0 ]
}
由執(zhí)行結(jié)果可以看出,下標(biāo)0 未定義,所以輸出結(jié)果為0.
2.4 不指定長度,通過索引值進行初始化
如果我們不指定長度,系統(tǒng)會默認以你索引值的最大值來決定長度。 比如:
package mainimport "fmt"func main() {mufeng := []int{1: 1, 4: 2}fmt.Println(mufeng)//執(zhí)行結(jié)果為[0 1 0 0 2]
}
這個腳本中,雖然沒有指定長度,但是索引值最大是4,而且索引值為4的時候,初始化為2.,未初始化的都是0.
所以執(zhí)行結(jié)果為 [0 1 0 0 2]。
2.5 數(shù)組的訪問
數(shù)組的每個元素都可以通過索引下標(biāo)來訪問,索引下標(biāo)的范圍是從 0 開始到數(shù)組長度減 1 的位置,內(nèi)置函數(shù) len()
可以返回數(shù)組中元素的個數(shù)。
package mainimport "fmt"func main() {mufeng := []int{1: 1, 4: 2}fmt.Println(mufeng)//執(zhí)行結(jié)果為[0 1 0 0 2]var mufeng1 = [4]int8{2, 4, 6, 8}fmt.Println("對mfueng1取索引為3的值", mufeng1[3])//對mfueng1取索引為3的值 8fmt.Println("統(tǒng)計元素個數(shù)", len(mufeng1))//統(tǒng)計元素個數(shù) 4
}
想要獲取第幾位的值,就根據(jù)下表去訪問,比如第一位的值 mufeng1[0]
,打印最后一個元素,但你不知道最后一個是第幾位,就可以用len()
package mainimport "fmt"func main() {mufeng := []int{1: 1, 4: 2}fmt.Println(mufeng[len(mufeng)-1])//執(zhí)行結(jié)果為2
}
這里的計算公式是: 先統(tǒng)計一共有多少個元素:len(mufeng)
, 而下標(biāo)值就等于總元素的個數(shù)減1. len(mufeng)-1
.
有了下標(biāo)值之后,就可以根據(jù)下標(biāo)獲取元素值, 也就是mufeng(len[(mufeng) -1])
.
三. 數(shù)組的比較
3.1 數(shù)據(jù)類型相同,但長度不同
我們學(xué)字符串類型的時候,經(jīng)常會把 a== b
把b復(fù)制給a, 但在數(shù)組這邊,需要注意幾個地方:
雖然數(shù)據(jù)類型相同,但長度不相等的兩個數(shù)組,肯定是不相等的。 比如 [3]int
和[4] int
,這其實是兩種不同的數(shù)組類型。
mufeng := [2] int{1,2}
mufeng=[3]int{1,2,3} 這里的賦值方法是錯誤的,因為他們兩個的長度不相等
3.2 數(shù)據(jù)類型相同且長度相同
如果兩個數(shù)組類型相同(包括數(shù)組的長度,數(shù)組中元素的類型)的情況下,我們可以直接通過較運算符(==和!=)來判斷兩個數(shù)組是否相等,只有當(dāng)兩個數(shù)組的所有元素都是相等的時候數(shù)組才是相等的,不能比較兩個類型不同的數(shù)組,否則程序?qū)o法完成編譯。
可以看到,當(dāng)mufeng1 和mufeng2 以及mufeng4對標(biāo)的時候,因為[]
里的值不同,所以無法編譯通過。
四. 數(shù)組的遍歷
一維數(shù)組的聲明及遍歷代碼:一個標(biāo)準(zhǔn)的for循環(huán)遍歷及一個range調(diào)用遍歷
for...range
迭代的性能會更好一些,他的語法:
for index,value := range myArray{//循環(huán)體
}
格式說明:
- index:保存每個元素索引的變量
- value:保存每個元素值的變量
- myArray:正在處理的數(shù)組
package mainimport "fmt"func main() {var mufeng3 = []int{1, 2, 3, 4, 5}//for循環(huán)變量的方法//這里是把兩種方法寫一起了所以把上面的注釋掉了//for i := 0; i <= len(mufeng3); i++ {// fmt.Println(mufeng3[i])//}//fmt.Println("\n")//使用range的方法for _, value := range mufeng3 {fmt.Println(value, "\t")}
}
注意: 這里是把兩種方法寫在一起了,所以把上面的for
循環(huán)注釋掉了 。
推薦使用for range
的方式。
補充: 使用fmt輸出數(shù)組相關(guān)的信息:
package mainimport "fmt"func main() {var mufeng3 = [5]int{1, 2, 3, 4, 5}fmt.Println(mufeng3)fmt.Printf("%#v", mufeng3)fmt.Printf("\n")fmt.Printf("%T", mufeng3)
}
輸出結(jié)果:
[1 2 3 4 5]
[5]int{1, 2, 3, 4, 5}
[5]int
五 . 二維數(shù)組
5.1 二維數(shù)組的介紹
有一個下標(biāo),我們叫一維數(shù)組,有兩個下標(biāo)的就是二維數(shù)組,一般日常開發(fā)中,用到三維數(shù)組以上的就比較少了。
二維數(shù)組的案例:
package mainimport "fmt"func main() {var mufeng [3][4]intmufeng[1][2] = 3mufeng[2][1] = 4fmt.Println(mufeng)
}// 執(zhí)行結(jié)果:
//[[0 0 0 0] [0 0 3 0] [0 4 0 0]]
為了便于理解,在這里我們把[1][2]
,定義為 第一個是[1]
是a,第二個是[2]
是b.
可以看到我們定義的mufeng[1][2] = 3
,實際上就是 a1的b2的位置等于3. 如圖所示:
5.2 二維數(shù)組的遍歷
package mainimport "fmt"func main() {//一維數(shù)組定義//var 數(shù)組名 [元素個數(shù)] 數(shù)據(jù)類型//二維數(shù)組//var 數(shù)組名 [行個數(shù)][列個數(shù)] 數(shù)據(jù)類型var mufeng [3][4]int// 通過行和列的下標(biāo)找到具體元素mufeng[1][2] = 1 //賦值操作mufeng[2][1] = 13mufeng[0][3] = 33//fmt.Print(arr)for i := 0; i < 3; i++ {for j := 0; j < 4; j++ {fmt.Print(mufeng[i][j], " ")}fmt.Println()}}
執(zhí)行結(jié)果:
0 0 0 33
0 0 1 0
0 13 0 0
總結(jié)
以上就是今天的全部內(nèi)容,希望對你有用。
💕 好啦,這就是今天要分享給大家的全部內(nèi)容了,我們下期再見!
💕 本文由沐風(fēng)曉月原創(chuàng),首發(fā)于CSDN博客, 博客主頁:mufeng.blog.csdn.net
💕 日拱一卒無盡有,功不唐捐終入海
💕 喜歡的話記得點贊收藏哦