一篇文章帶你了解Go語言基礎(chǔ)之?dāng)?shù)組
回復(fù)“Go語言”即可獲贈Python從入門到進階共10本電子書
????上篇文章中我們學(xué)習(xí)了Go語言基礎(chǔ)中的變量,一篇文章帶你了解Go語言基礎(chǔ)之變量,這篇文章我們繼續(xù)介紹Go語言基礎(chǔ)知識,今天跟大家分享的是基礎(chǔ)數(shù)據(jù)類型之?dāng)?shù)組,一起來學(xué)習(xí)下吧~
前言
Hey,大家好呀,我是星期八,這次咱們繼續(xù)學(xué)習(xí)Go基礎(chǔ)之?dāng)?shù)組扒。
什么是數(shù)組
我的總結(jié):一個變量,指向一塊連續(xù)的,具有長度的,并且是相同類型的一塊內(nèi)存。

如何定義數(shù)組
var 變量名 [元素個數(shù)]元素類型示例:
package mainfunc main() {//聲明一個name_list數(shù)組,長度為100,里面只能放字符串var name_list [100]string}
注:
var 變量名 [元素個數(shù)]元素類型 等同于 var 變量名 變量類型所以var name1 [3]int != var name2 [4]int因為變量類型是不一樣,不可以直接進行賦值

數(shù)組初始化
package mainimport "fmt"func main() {//方式一,聲明不賦值//var name_list [10]int//fmt.Println(name_list) //結(jié)果:[0 0 0 0 0 0 0 0 0 0] 聲明不賦值,int類型默認(rèn)是0,其他類型也有默認(rèn)值////方式二, 聲明沒有賦值完//var name_list [10]int = [10]int{1, 3}//fmt.Println(name_list) //結(jié)果:[1 3 0 0 0 0 0 0 0 0],沒有賦值完的,其他仍然是默認(rèn)值//方式三,聲明完完全賦值//var name_list = [3]int{1, 6, 10} //使用類型推斷方式,同上//fmt.Println(name_list) //結(jié)果:[1 6 10],每個都有值,沒啥可說的//方式四,自動推斷個數(shù)//var name_list = [...]int{1, 2, 4, 5, 19} //...表示自動推斷個數(shù),不會存在過多或者過少//fmt.Println(name_list) //結(jié)果:[1 2 4 5 19]//方式五,指定索引方式賦值,用的很少var name_list = [...]int{1: 66, 4: 11} //下標(biāo)1賦值為66,下標(biāo)4賦值11,其他默認(rèn)值fmt.Println(name_list) //結(jié)果:[0 66 0 0 11]}
數(shù)組遍歷
package mainimport "fmt"func main() {var name_list = [...]string{"張三", "李四", "王五", "小劉"}//方式一,普通for遍歷//for i := 0; i < len(name_list); i++ {//fmt.Println(name_list[i])//}//方式二,for range方式for index, name := range name_list {//index是每個的下標(biāo),name是值fmt.Println(index, name)}}
多維數(shù)組
二維數(shù)組
通常情況下,二維數(shù)組基本夠用,最多三維數(shù)組,再套娃就完犢子了。
定義一個二維數(shù)組
package mainimport "fmt"func main() {//定義一個三行兩列的一個數(shù)組var student_list = [3][2]string{// 列 列{"張三", "李四"}, //行{"王五", "小劉"}, //行{"小七", "王八"}, //行}fmt.Println(student_list)}
循環(huán)二維數(shù)組
同理,定義一個二維數(shù)組需要兩層,循環(huán)也需要兩層。
package mainimport "fmt"func main() {//定義一個三行兩列的一個數(shù)組var student_list = [3][2]string{// 列 列{"張三", "李四"}, //行{"王五", "小劉"}, //行{"小七", "王八"}, //行}//方式一,普通for循環(huán)//for i := 0; i < len(student_list); i++ {////fmt.Println(student_list[i])//每行///*// [張三 李四]// [王五 小劉]// [小七 王八]//*///for j := 0; j < len(student_list[i]); j++ {// //每列// fmt.Println(student_list[i][j])//}//}//方式二,for rangefor _, v := range student_list {//fmt.Println(v) //每行/*[張三 李四][王五 小劉][小七 王八]*/for _, b := range v {//每列fmt.Println(b)}}}
多維數(shù)組是否可以長度推導(dǎo)
代碼
package mainimport "fmt"func main() {//定義一個三行兩列的一個數(shù)組var student_list = [...][...]string{// 列 列{"張三", "李四"}, //行{"王五", "小劉"}, //行{"小七", "王八"}, //行}fmt.Println(student_list)}
報錯

似乎是不可以的,那我只用第一層試試呢。
package mainimport "fmt"func main() {//定義一個三行兩列的一個數(shù)組var student_list = [...][2]string{// 列 列{"張三", "李四"}, //行{"王五", "小劉"}, //行{"小七", "王八"}, //行}fmt.Println(student_list)}

注:可以得出結(jié)論,在第一層時,是可以實現(xiàn)長度自動推導(dǎo)的。
總結(jié)
上述我們學(xué)習(xí)了Go基礎(chǔ)之?dāng)?shù)組。如果在操作過程中有任務(wù)問題,記得下面討論區(qū)留言,我們看到會第一時間解決問題。
我是碼農(nóng)星期八,如果覺得還不錯,記得動手點贊一下哈。感謝你的觀看。
-------------------?End?-------------------

歡迎大家點贊,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入學(xué)習(xí)群請在后臺回復(fù)【入群】
萬水千山總是情,點個【在看】行不行
評論
圖片
表情
