一篇文章帶你瞭解 Go 語言基礎之數組
前言
Hey,大家好呀,我是星期八,這次咱們繼續學習 Go 基礎之數組扒。
什麼是數組
我的總結:一個變量,指向一塊連續的,具有長度的,並且是相同類型的一塊內存。
如何定義數組
var 變量名 [元素個數]元素類型
示例:
package main
func main() {
//聲明一個name_list數組,長度爲100,裏面只能放字符串
var name_list [100]string
}
注:
var 變量名 [元素個數]元素類型 等同於 var 變量名 變量類型
所以
var name1 [3]int != var name2 [4]int
因爲變量類型是不一樣,不可以直接進行賦值
數組初始化
package main
import "fmt"
func main() {
//方式一,聲明不賦值
//var name_list [10]int
//fmt.Println(name_list) //結果:[0 0 0 0 0 0 0 0 0 0] 聲明不賦值,int類型默認是0,其他類型也有默認值
//
//方式二, 聲明沒有賦值完
//var name_list [10]int = [10]int{1, 3}
//fmt.Println(name_list) //結果:[1 3 0 0 0 0 0 0 0 0],沒有賦值完的,其他仍然是默認值
//方式三,聲明完完全賦值
//var name_list = [3]int{1, 6, 10} //使用類型推斷方式,同上
//fmt.Println(name_list) //結果:[1 6 10],每個都有值,沒啥可說的
//方式四,自動推斷個數
//var name_list = [...]int{1, 2, 4, 5, 19} //...表示自動推斷個數,不會存在過多或者過少
//fmt.Println(name_list) //結果:[1 2 4 5 19]
//方式五,指定索引方式賦值,用的很少
var name_list = [...]int{1: 66, 4: 11} //下標1賦值爲66,下標4賦值11,其他默認值
fmt.Println(name_list) //結果:[0 66 0 0 11]
}
數組遍歷
package main
import "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是每個的下標,name是值
fmt.Println(index, name)
}
}
多維數組
二維數組
通常情況下,二維數組基本夠用,最多三維數組,再套娃就完犢子了。
定義一個二維數組
package main
import "fmt"
func main() {
//定義一個三行兩列的一個數組
var student_list = [3][2]string{
// 列 列
{"張三", "李四"}, //行
{"王五", "小劉"}, //行
{"小七", "王八"}, //行
}
fmt.Println(student_list)
}
循環二維數組
同理,定義一個二維數組需要兩層,循環也需要兩層。
package main
import "fmt"
func main() {
//定義一個三行兩列的一個數組
var student_list = [3][2]string{
// 列 列
{"張三", "李四"}, //行
{"王五", "小劉"}, //行
{"小七", "王八"}, //行
}
//方式一,普通for循環
//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 range
for _, v := range student_list {
//fmt.Println(v) //每行
/*
[張三 李四]
[王五 小劉]
[小七 王八]
*/
for _, b := range v {
//每列
fmt.Println(b)
}
}
}
多維數組是否可以長度推導
代碼
package main
import "fmt"
func main() {
//定義一個三行兩列的一個數組
var student_list = [...][...]string{
// 列 列
{"張三", "李四"}, //行
{"王五", "小劉"}, //行
{"小七", "王八"}, //行
}
fmt.Println(student_list)
}
報錯
似乎是不可以的,那我只用第一層試試呢。
package main
import "fmt"
func main() {
//定義一個三行兩列的一個數組
var student_list = [...][2]string{
// 列 列
{"張三", "李四"}, //行
{"王五", "小劉"}, //行
{"小七", "王八"}, //行
}
fmt.Println(student_list)
}
**注:**可以得出結論,在第一層時,是可以實現長度自動推導的。
總結
上述我們學習了 Go 基礎之數組。如果在操作過程中有任務問題,記得下面討論區留言,我們看到會第一時間解決問題。
我是碼農星期八,如果覺得還不錯,記得動手點贊一下哈。感謝你的觀看。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/wCTVg79ZZuHhf8iLGIe12w