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

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