自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一篇文章帶你了解Go語言基礎(chǔ)之?dāng)?shù)組

開發(fā) 后端
這篇文章我們繼續(xù)介紹Go語言基礎(chǔ)知識(shí),今天跟大家分享的是基礎(chǔ)數(shù)據(jù)類型之?dāng)?shù)組,一起來學(xué)習(xí)下吧~

[[347712]]

 前言
Hey,大家好呀,我是星期八,這次咱們繼續(xù)學(xué)習(xí)Go基礎(chǔ)之?dāng)?shù)組扒。

 

什么是數(shù)組
我的總結(jié):一個(gè)變量,指向一塊連續(xù)的,具有長度的,并且是相同類型的一塊內(nèi)存。

如何定義數(shù)組

  1. var 變量名 [元素個(gè)數(shù)]元素類型 

示例:

  1. package main 
  2.  
  3. func main() { 
  4.     //聲明一個(gè)name_list數(shù)組,長度為100,里面只能放字符串 
  5.     var name_list [100]string 

注:

  1. var 變量名 [元素個(gè)數(shù)]元素類型 等同于 var 變量名 變量類型 
  2. 所以 
  3. var name1 [3]int != var name2 [4]int 
  4. 因?yàn)樽兞款愋褪遣灰粯?,不可以直接進(jìn)行賦值 

數(shù)組初始化

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.     //方式一,聲明不賦值 
  7.     //var name_list [10]int 
  8.     //fmt.Println(name_list) //結(jié)果:[0 0 0 0 0 0 0 0 0 0] 聲明不賦值,int類型默認(rèn)是0,其他類型也有默認(rèn)值 
  9.     // 
  10.     //方式二, 聲明沒有賦值完 
  11.     //var name_list [10]int = [10]int{1, 3} 
  12.     //fmt.Println(name_list) //結(jié)果:[1 3 0 0 0 0 0 0 0 0],沒有賦值完的,其他仍然是默認(rèn)值 
  13.  
  14.     //方式三,聲明完完全賦值 
  15.     //var name_list = [3]int{1, 6, 10} //使用類型推斷方式,同上 
  16.     //fmt.Println(name_list)           //結(jié)果:[1 6 10],每個(gè)都有值,沒啥可說的 
  17.  
  18.     //方式四,自動(dòng)推斷個(gè)數(shù) 
  19.     //var name_list = [...]int{1, 2, 4, 5, 19} //...表示自動(dòng)推斷個(gè)數(shù),不會(huì)存在過多或者過少 
  20.     //fmt.Println(name_list)                   //結(jié)果:[1 2 4 5 19] 
  21.  
  22.     //方式五,指定索引方式賦值,用的很少 
  23.     var name_list = [...]int{1: 66, 4: 11} //下標(biāo)1賦值為66,下標(biāo)4賦值11,其他默認(rèn)值 
  24.     fmt.Println(name_list)                 //結(jié)果:[0 66 0 0 11] 

數(shù)組遍歷

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.     var name_list = [...]string{"張三", "李四", "王五", "小劉"
  7.     //方式一,普通for遍歷 
  8.     //for i := 0; i < len(name_list); i++ { 
  9.     //fmt.Println(name_list[i]) 
  10.     //} 
  11.  
  12.     //方式二,for range方式 
  13.     for index, name := range name_list { 
  14.         //index是每個(gè)的下標(biāo),name是值 
  15.         fmt.Println(index, name
  16.   } 

多維數(shù)組
二維數(shù)組
通常情況下,二維數(shù)組基本夠用,最多三維數(shù)組,再套娃就完?duì)僮恿恕?/p>

定義一個(gè)二維數(shù)組

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.     //定義一個(gè)三行兩列的一個(gè)數(shù)組 
  7.     var student_list = [3][2]string{ 
  8.         // 列     列 
  9.         {"張三", "李四"}, //行 
  10.         {"王五", "小劉"}, //行 
  11.         {"小七", "王八"}, //行 
  12.     fmt.Println(student_list) 

循環(huán)二維數(shù)組
同理,定義一個(gè)二維數(shù)組需要兩層,循環(huán)也需要兩層。

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.     //定義一個(gè)三行兩列的一個(gè)數(shù)組 
  7.     var student_list = [3][2]string{ 
  8.         // 列     列 
  9.         {"張三", "李四"}, //行 
  10.         {"王五", "小劉"}, //行 
  11.         {"小七", "王八"}, //行 
  12.     //方式一,普通for循環(huán) 
  13.     //for i := 0; i < len(student_list); i++ { 
  14.     ////fmt.Println(student_list[i])//每行 
  15.     ///* 
  16.     //      [張三 李四] 
  17.     //      [王五 小劉] 
  18.     //      [小七 王八] 
  19.     //*/ 
  20.     //for j := 0; j < len(student_list[i]); j++ { 
  21.     //      //每列 
  22.     //      fmt.Println(student_list[i][j]) 
  23.     //} 
  24.     //} 
  25.  
  26.     //方式二,for range 
  27.     for _, v := range student_list { 
  28.         //fmt.Println(v) //每行 
  29.         /* 
  30.             [張三 李四] 
  31.             [王五 小劉] 
  32.             [小七 王八] 
  33.         */ 
  34.         for _, b := range v { 
  35.             //每列 
  36.             fmt.Println(b) 
  37.         } 
  38.   } 

多維數(shù)組是否可以長度推導(dǎo)
代碼

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.     //定義一個(gè)三行兩列的一個(gè)數(shù)組 
  7.     var student_list = [...][...]string{ 
  8.         // 列     列 
  9.         {"張三", "李四"}, //行 
  10.         {"王五", "小劉"}, //行 
  11.         {"小七", "王八"}, //行 
  12.     fmt.Println(student_list) 

報(bào)錯(cuò)

似乎是不可以的,那我只用第一層試試呢。

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. func main() { 
  6.   //定義一個(gè)三行兩列的一個(gè)數(shù)組 
  7.   var student_list = [...][2]string{ 
  8.     // 列     列 
  9.     {"張三", "李四"}, //行 
  10.     {"王五", "小劉"}, //行 
  11.     {"小七", "王八"}, //行 
  12.   } 
  13.   fmt.Println(student_list) 

注:可以得出結(jié)論,在第一層時(shí),是可以實(shí)現(xiàn)長度自動(dòng)推導(dǎo)的。

 

責(zé)任編輯:姜華 來源: Go語言進(jìn)階學(xué)習(xí)
相關(guān)推薦

2020-11-05 09:58:16

Go語言Map

2022-02-16 10:03:06

對象接口代碼

2020-11-11 10:52:54

Go語言C語言

2022-04-27 10:01:43

切片Go封裝

2020-12-30 09:04:32

Go語言TCPUDP

2020-10-25 07:33:13

Go語言

2020-12-09 09:59:32

Go語言技術(shù)

2021-10-09 07:10:31

Go語言基礎(chǔ)

2020-10-23 08:38:19

Go語言

2020-12-27 10:15:44

Go語言channel管道

2020-12-07 05:59:02

語言Go接口

2021-10-30 10:43:04

語言Go函數(shù)

2021-11-03 10:02:07

Go基礎(chǔ)函數(shù)

2021-09-29 10:00:07

Go語言基礎(chǔ)

2021-10-13 10:00:52

Go語言基礎(chǔ)

2020-10-22 11:15:47

Go語言變量

2021-10-16 10:17:51

Go語言數(shù)據(jù)類型

2020-12-23 08:39:11

Go語言基礎(chǔ)技術(shù)

2021-02-20 10:06:14

語言文件操作

2021-01-13 08:40:04

Go語言文件操作
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)