精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一篇帶給你Go 語言的數組與切片

開發 后端
數組是一組類型相同的,長度固定的,按數字編號排列的數據序列。由于 go 語言中,數組的類型相同且長度固定,所以在聲明數組的時候,就會體現這兩個特點。

[[392091]]

數組

數組是一組類型相同的,長度固定的,按數字編號排列的數據序列。由于 go 語言中,數組的類型相同且長度固定,所以在聲明數組的時候,就會體現這兩個特點。

  1. var array [5]int // [0 0 0 0 0] 

數組通過 [SIZE](方括號內為數組長度) 加上 TYPE(類型) 的形式聲明,上面的代碼就表示 array 變量為一個長度為 5,且五個數據的類型都為 int。

在之前介紹變量的時候,介紹過 int 類型的默認值為 0,所以 array 的值為 [0 0 0 0 0]。

數組初始化

數組在初始化階段,需要通過 {} 的方式,指定數組每個位置的具體值。

  1. var array [3]int = [3]int{1, 2, 3} // [1 2 3] 

可以看到 {} 的前面也要帶上數組的長度與類型,由于 go 能夠進行類型推導,變量后聲明的類型顯得有點多余,是可以省略的。

  1. var array = [3]int{1, 2, 3} // [1 2 3] 

🎶 指定索引賦值

初始化的過程中,我們還可以指定索引進行賦值,也就是不必給數組的每個位置都安排上具體的值。

  1. var array = [5]int{1: 77, 3: 77} // [0 77 0 77 0] 

上面的數組輸出的結果為:[0 77 0 77 0]。和其他語言一樣,數組的索引是從 0 開始的,我們給索引為 1 和 3 位置都指定了值為 77 ,其他位置由于沒有指定具體值,就是其類型的默認值。

🎶 自動推導數組長度

前面的案例都是指定了數組的長度,其實我們可以通過 [...] 的方式,告訴 go 編譯器,數組長度尚未確定,在初始化之后才能確定其長度,然后 go 在編譯階段就會自動進行推導。

  1. var array = [...]int{1, 2, 3, 4, 5} // [1 2 3 4 5] 
  2. fmt.Println("array length is", len(array)) 

我們可以通過 len 方法獲取數組的長度,上面代碼的運行結果如下:

如果我們在指定索引的位置賦值了,最終長度取決于最末尾的索引,下面的代碼中,指定了索引 5 的值為 77,則數組的長度為 6。

  1. var array = [...]int{1: 77, 5: 77} // [0 77 0 0 0 77] 
  2. fmt.Println("array length is", len(array)) 

賦值與訪問

與其他語言一樣,數組的賦值和訪問都是通過 [Index] 操作的。

  1. var array = [...]int{1, 2, 3} 
  2. array[0] = 100 // 索引 0 的位置重新賦值為 100 
  3. fmt.Println("array is", array) 

取值也是同樣的操作,我們現在實現一個求數組平均數的函數:

  1. func getAverage(array [5]int) float32 { 
  2.  var sum int 
  3.  var avg float32 
  4.  
  5.  for i := 0; i < 5; i++ { 
  6.   sum += array[i] 
  7.  } 
  8.  
  9.  avg = float32(sum) / 5 
  10.  
  11.  return avg 
  1. var array = [5]int{1, 2, 3, 4, 5} 
  2. fmt.Println("average is", getAverage(array)) 

多維數組

多維數組的聲明,相對于一維數組,就是看前面有幾個 [SIZE]。

  1. var a1 [2][3]int // 二維數組 
  2. var a1 [2][3][4]int // 三維數組 

我們拿三維數組舉例,第一個 [] 內的數字表示最外層數組的長度,往后以此類推。[2][3][4]int 表示最外層數組長度為 2,第二層數組長度為 3,最內層數組長度為 4。其賦值方式也和一維數組一樣,只是多維數組需要將多個 {} 進行嵌套。

  1. var a1 = [2][3][4]int
  2.   { 
  3.     {1, 2, 3, 4}, 
  4.     {1, 2, 3, 4}, 
  5.     {1, 2, 3, 4}, 
  6.   }, 
  7.   { 
  8.     {1, 2, 3, 4}, 
  9.     {1, 2, 3, 4}, 
  10.     {1, 2, 3, 4}, 
  11.   }, 
  12. fmt.Println(a1) 

打印結果:

多維數組的訪問和一維數組一樣,也是通過 [] + 數組索引,只是多維數組要訪問某個值需要多個 []。

如果我們要拿到下圖的 2,訪問方式為:array[0][1][1]

  1. fmt.Println("array[0][1][1] = ", array[0][1][1]) 

切片

前面介紹過,數組是一組類型相同且長度固定的數據集合,而切片就是一種比較抽象的數組,其長度不固定,聲明方式與數組類似([] 中不顯示注明數組長度,也不使用 [...] 的方式進行長度的推導):

  1. var slice []int 

切片初始化

切片的初始化與數組類似,只要省略掉 [] 內注明的數組長度即可:

  1. var s1 = []int{1, 2, 3} 
  2. s2 := []int{1, 2, 3} // 簡寫 

除了這種字面量的聲明方式,還可以通過 go 的內置方法:make,來進行切片的初始化:

  1. var s1 = make([]int, 3) 
  2. s2 := make([]int, 3) // 簡寫 

make 方法的第二個參數表示切片的長度,雖然切片的長度可變,但是通過 make 方法創建切片時,需要指定一個長度。除了指定切片的長度,make 方法還支持傳入第三個參數,用來指定切片的『容量』,如果沒有指定切片的容量,那初始狀態切片的容量與長度一致。

  1. func make([]T, len, cap) 

長度與容量

長度指的是,切片內有多少個元素,而容量可以理解為,當前切片在內存中開辟了多大的空間。前面介紹過,可以通過 len 方法獲取到數組的長度,獲取切片的長度也可以使用該方法。要獲取切片的容量,可以使用 cap 方法。

  1. s1 := make([]int, 5) 
  2. fmt.Printf("The length of s1 is %d\n", len(s1)) 
  3. fmt.Printf("The capacity of s1 is %d\n", cap(s1)) 

可以看到初始狀態下,切片的長度與容量一致。如果要修改切片的長度,可以通過 append方法,在切片尾部追加一個新的值。

  1. s1 := make([]int, 3, 5) // 聲明一個長度為 3,容量為 5 的切面 
  2. s1 = append(s1, 1) // 在尾部追加一個值,長度會變成 4 
  3.  
  4. fmt.Printf("The length of s1 is %d\n", len(s1)) 
  5. fmt.Printf("The capacity of s1 is %d\n", cap(s1)) 

append 方法是可以接受多個參數,我們在追加一個值之后,繼續調用 append 方法,往切片后再追加兩個值:

  1. s1 := make([]int, 3, 5) 
  2. s1 = append(s1, 1) 
  3. s1 = append(s1, 2, 3) 
  4. fmt.Println(s1) // [0 0 0 1 2 3] 
  5. fmt.Printf("The length of s1 is %d\n", len(s1)) 
  6. fmt.Printf("The capacity of s1 is %d\n", cap(s1)) 

此時的切片的長度已經變成了 6,超過了切片的容量,那這個時候切換的容量會不會也變成 6?

根據輸出的結果,此時切片的容量變成了 10,這意味著切片的容量的擴充是在之前的基礎上進行翻倍操作的。為了驗證這個結論,我們在切片后繼續追加 5 個值,讓切片的長度變成 11,超出當前的容量,看看容量會變成多少。

  1. s1 := make([]int, 3, 5) 
  2. s1 = append(s1, 1) 
  3. s1 = append(s1, 2, 3) 
  4. s1 = append(s1, 4, 5, 6, 7, 8) 
  5.  
  6. fmt.Printf("The length of s1 is %d\n", len(s1)) 
  7. fmt.Printf("The capacity of s1 is %d\n", cap(s1)) 

可以看到切片的容量變成了 20,這也驗證了我們之前的結論,當切片長度超過了其容量,容量會在原來的基礎上翻倍。那如果切片容量達到了 2000,長度超過 2000,容量也會變成 4000 嗎?

  1. s1 := make([]int, 1024) 
  2. s1 = append(s1, 1) 
  3.  
  4. fmt.Printf("\nThe length of s1 is %d\n", len(s1)) 
  5. fmt.Printf("The capacity of s1 is %d\n", cap(s1)) 

可以看到,我們新定義的切片長度為 1024,在長度變成 1025 的時候,容量并沒有翻倍。為了避免切片容量無休止的擴展,go 規定如果當前切片的長度大于 1024 ,在長度超過其容量時,只會增加 25% 的容量。

切片截取

切片之所以叫切片,是因為它可以通過切出數組中的某一塊來創建。語法規則也很簡單:Array[start:end]。

  1. arr := [5]int{1, 2, 3, 4, 5} 
  2. slice := arr[1:3] 
  3.  
  4. fmt.Println(slice) // [2 3] 

arr[1:3] 表示將數組的從索引為 1 的位置一直到索引為 3 的位置(不包括 3)截取出來,形成一個切片。當然這個開頭結尾的數字也是可以省略的,如果我們如果我們省略開頭就表示截取開始的位置為 0,省略結尾就表示截取結束的位置一直到數組的最后一位。

  1. arr := [5]int{1, 2, 3, 4, 5} 
  2. slice := arr[1:] 
  3. fmt.Println(slice) // [2 3 4 5] 

通過省略截取的開頭和結尾,我們就能將一個數組進行一次拷貝操作,然后形成一個切片。(PS. 截取操作形成的新數據是一個切片)

  1. arr := [5]int{1, 2, 3, 4, 5} 
  2. slice := arr[:] 
  3.  
  4. fmt.Printf("slice = %v, slice type is %T", slice, slice) 

 

責任編輯:姜華 來源: 自然醒的筆記本
相關推薦

2021-06-24 06:35:00

Go語言進程

2021-04-30 09:04:11

Go 語言結構體type

2021-04-06 10:19:36

Go語言基礎技術

2021-03-24 06:06:13

Go并發編程Singlefligh

2021-10-14 11:31:28

數組面試題中心下標

2021-07-12 06:11:14

SkyWalking 儀表板UI篇

2022-04-29 14:38:49

class文件結構分析

2021-04-08 11:00:56

CountDownLaJava進階開發

2021-07-21 09:48:20

etcd-wal模塊解析數據庫

2022-02-17 08:53:38

ElasticSea集群部署

2021-03-12 09:21:31

MySQL數據庫邏輯架構

2021-06-21 14:36:46

Vite 前端工程化工具

2021-04-01 10:51:55

MySQL鎖機制數據庫

2021-01-28 08:55:48

Elasticsear數據庫數據存儲

2021-04-14 14:16:58

HttpHttp協議網絡協議

2024-06-13 08:34:48

2022-03-22 09:09:17

HookReact前端

2023-03-29 07:45:58

VS編輯區編程工具

2021-07-08 07:30:13

Webpack 前端Tree shakin

2023-03-13 09:31:04

點贊
收藏

51CTO技術棧公眾號

日本不卡视频在线播放| 亚洲国产精品女人久久久| 性欧美精品一区二区三区在线播放 | 成年人网站91| 5566成人精品视频免费| 欧美成人短视频| 在线精品视频一区| 日本韩国精品在线| 超薄肉色丝袜足j调教99| 天天综合网在线| 人人爽香蕉精品| 久久久久久久久久久av| 阿v天堂2014| 精品三级av| 欧美日韩国产成人在线免费| 欧美一级视频免费看| 伊人在线视频| 成人av免费网站| 成人国产亚洲精品a区天堂华泰| 99久在线精品99re8热| 999精品一区| 亚洲精品永久免费精品| 被黑人猛躁10次高潮视频| 中文字幕人成乱码在线观看| 亚洲婷婷国产精品电影人久久| 蜜桃成人在线| www黄色网址| 蜜臀av性久久久久av蜜臀妖精| 久久久免费观看| 国产中文字幕久久| 精品av一区二区| 亚洲国产精品久久久| 欧美性受xxxx黒人xyx性爽| 欧美aaa视频| 精品国产91乱高清在线观看| 国产在线无码精品| 在线国产情侣| 国产蜜臀av在线一区二区三区| 精品国产乱码久久久久久108| 国产熟女一区二区三区四区| 蜜桃久久av一区| 日韩av不卡在线| 在线观看国产亚洲| 亚洲成人中文| 九九热精品视频国产| 久久国产高清视频| 91欧美在线| 深夜福利国产精品| 18啪啪污污免费网站| 精品产国自在拍| 亚洲精品久久久久中文字幕欢迎你| 91香蕉视频免费看| 欧美激情精品| 日韩一区二区三区三四区视频在线观看| 色一情一区二区三区| 日韩免费福利视频| 色婷婷av一区二区三区之一色屋| 六月丁香婷婷激情| 性爽视频在线| 色先锋资源久久综合| 国产肥臀一区二区福利视频| 免费毛片b在线观看| 精品毛片网大全| 三级4级全黄60分钟| 亚洲欧美小说色综合小说一区| 欧美色播在线播放| 欧美性猛交久久久乱大交小说| 日韩性xxx| 欧美老女人在线| 欧美激情国内自拍| 北条麻妃在线一区二区免费播放 | 久久久久久久久久久人体| 久久久久久久极品内射| 亚洲人成高清| 国产不卡av在线| 中文字幕资源网| 狠狠狠色丁香婷婷综合久久五月| 亚洲综合色av| 欧美一级在线免费观看| 久久综合丝袜日本网| 欧洲成人一区二区| 日本欧美在线视频免费观看| 亚洲美女一区二区三区| 国产精品视频一二三四区| 四虎影院观看视频在线观看| 精品免费在线观看| 亚洲综合在线网站| 精品一区二区三区在线观看视频| 亚洲精品在线一区二区| 亚洲精品成人无码熟妇在线| 日韩高清欧美| 久久久久久久97| 日日夜夜操视频| 韩国精品一区二区| 国产一区二区三区四区hd| 国产精品二线| 亚洲观看高清完整版在线观看| 免费观看日韩毛片| 在线不卡一区| 国产视频亚洲视频| 日韩成人毛片视频| 美女被久久久| 69堂成人精品视频免费| 五月婷在线视频| 中文字幕字幕中文在线中不卡视频| 欧美亚洲黄色片| 成人午夜sm精品久久久久久久| 日韩欧美国产电影| 日韩丰满少妇无码内射| 欧美私人啪啪vps| 国产精品久久色| 欧美在线 | 亚洲| 亚洲欧洲性图库| 亚洲精品无码久久久久久| 国产一区 二区| 夜夜嗨av色一区二区不卡| 免费无遮挡无码永久在线观看视频| 日本不卡一二三区黄网| 精品无人区一区二区三区| av网址在线看| 精品视频一区 二区 三区| 亚洲av无码一区二区三区网址| 亚洲最新色图| 国产精品久久久久秋霞鲁丝| 欧美少妇另类| 亚洲动漫第一页| 亚洲精品一二三四| 国产精品99视频| 国产精品国产三级国产aⅴ浪潮 | 国产视频在线观看网站| 亚洲网站免费| 上原亚衣av一区二区三区| 香蕉影院在线观看| 2020日本不卡一区二区视频| 欧美一区二区激情| 亚洲开心激情| 欧美另类极品videosbest最新版本| 中文精品久久久久人妻不卡| 久久亚洲精精品中文字幕早川悠里| 国产freexxxx性播放麻豆| 亚洲精品一二三**| 色综合色综合久久综合频道88| 99精品在线看| 一区二区三区在线视频观看58| 色呦色呦色精品| 国产精品久久久久久久久久10秀| 国产精品精品久久久久久| 邻居大乳一区二区三区| 91成人免费电影| 成熟人妻av无码专区| 视频一区欧美精品| 日韩国产精品一区二区| jizz免费一区二区三区| 亚洲最新在线视频| 一本久道久久综合无码中文| 国产精品久久毛片a| 91小视频网站| 99久久99热这里只有精品 | 亚洲 高清 成人 动漫| 欧美成人午夜77777| 98精品在线视频| 人操人视频在线观看| 91久久精品一区二区二区| 国产精品扒开腿做爽爽| 日本视频一区二区三区| 亚洲永久激情精品| 国产美女亚洲精品7777| 欧美成人精品激情在线观看 | 伊人狠狠色丁香综合尤物| 色综合一区二区日本韩国亚洲| 久久视频在线观看免费| 成人黄色免费视频| 精品国产乱码久久久久久天美| www.久久国产| 蜜乳av一区二区| 一二三在线视频| 欧亚精品一区| 国产精品午夜国产小视频| 国产黄色小视频在线| 精品国产一区二区三区不卡| 波多野结衣视频网站| 国产精品色在线| 一个人看的视频www| 在线观看视频免费一区二区三区| 欧美高清性xxxxhd| 欧美一级做一级爱a做片性| 欧美国产日韩免费| 九色视频网站在线观看| 51午夜精品国产| 国产精品第9页| 中文字幕精品在线不卡| 粗大的内捧猛烈进出视频| 久久精选视频| 国产精品av免费观看| 伊人精品一区| 99精品99久久久久久宅男| 韩国成人漫画| 欧美日韩国产二区| 9色在线视频网站| 精品99999| 91麻豆成人精品国产| 精品国产精品三级精品av网址| 香蕉久久久久久久| 91一区二区三区在线播放| 91亚洲精品久久久蜜桃借种| 国产精品免费看| 裸体裸乳免费看| 免费视频国产一区| 国产精品sss| 亚洲ww精品| 国产精品va在线播放| √天堂8资源中文在线| 日韩网站免费观看高清| 青青草在线视频免费观看| 欧美大片一区二区| 一区二区乱子伦在线播放| 精品久久久精品| 欧美日韩免费做爰视频| 中文字幕成人在线观看| 免费观看一级一片| 从欧美一区二区三区| 992kp免费看片| 日本强好片久久久久久aaa| 18禁网站免费无遮挡无码中文| 婷婷久久国产对白刺激五月99| 久久久com| 国产精品极品在线观看| 91手机在线播放| 亚洲黑人在线| 国产日本欧美一区二区三区| 黄瓜视频成人app免费| 97视频在线观看成人| 欧美xxxx性xxxxx高清| 久久成人免费视频| 免费网站免费进入在线| 中文字幕成人精品久久不卡 | 北条麻妃一区二区三区在线观看| 91精品免费视频| 欧美97人人模人人爽人人喊视频| 国产精品 欧美在线| 范冰冰一级做a爰片久久毛片| 91av网站在线播放| 日韩欧美一中文字暮专区| 羞羞色国产精品| 少妇视频在线观看| 欧美一级大胆视频| 在线天堂资源| 日韩免费在线观看视频| 新片速递亚洲合集欧美合集| 日韩美女av在线免费观看| 亚洲美女久久精品| 国产精品成av人在线视午夜片| 亚洲日本在线观看视频| 国产精品久久久久久久9999| 国产欧美自拍| 91探花福利精品国产自产在线| 9999精品免费视频| 亚洲最大成人在线| 丁香五月缴情综合网| 激情视频一区二区| 免费成人av| 日韩欧美视频第二区| 首页国产精品| 国产一级大片免费看| 伊人久久久大香线蕉综合直播 | 日本精品一区二区| 成人在线丰满少妇av| 97超碰免费观看| 精品不卡视频| 干日本少妇首页| 免费高清在线视频一区·| 老司机久久精品| 国产精品一区二区91| 男男一级淫片免费播放| 91欧美激情一区二区三区成人| 日本激情小视频| 国产精品色噜噜| 国产一级视频在线播放| 欧美三级欧美成人高清www| 中文字幕人妻精品一区| 欧美一激情一区二区三区| 性感美女福利视频| 中文字幕亚洲字幕| 2020av在线| 国产精品爽爽爽爽爽爽在线观看| 2020最新国产精品| 日韩av影视| 国产精品av一区二区| 无码少妇一区二区三区芒果| 国产精品一区二区三区99| 欧美大片免费播放器| 亚洲欧美精品午睡沙发| 制服.丝袜.亚洲.中文.综合懂色| 欧美精品一二三四| 天天摸天天干天天操| 最近中文字幕mv在线一区二区三区四区 | www.亚洲激情| 欧美一级在线观看| 麻豆av电影在线观看| 久久99久久99精品免观看粉嫩| 中文在线免费二区三区| 亚洲自拍偷拍视频| 精品久久成人| 精品无码国产一区二区三区av| 日本麻豆一区二区三区视频| 超碰caoprom| 亚洲黄色片在线观看| 97人妻精品视频一区| 亚洲国产成人精品电影| 男人和女人做事情在线视频网站免费观看| 亚洲2020天天堂在线观看| 91麻豆精品| 少妇特黄a一区二区三区| 亚洲精一区二区三区| 亚洲av毛片在线观看| 国产欧美综合在线| 亚洲日本韩国在线| 欧美α欧美αv大片| 黄视频网站在线| 国产精品视频精品| 国产欧美日韩精品一区二区三区 | 三级全黄做爰视频| 欧美自拍偷拍一区| 亚洲av毛片成人精品| 欧美精品videosex极品1| 伊人久久一区| 黄频视频在线观看| 美女一区二区三区在线观看| 谁有免费的黄色网址| 午夜精品福利一区二区蜜股av | 亚洲欧美日韩一区在线| 川上优av中文字幕一区二区| 91视频免费在线观看| 一区二区影视| 亚洲男人天堂2021| 成人免费一区二区三区在线观看| 精品久久久久久久久久久久久久久久久久| 亚洲激情国产精品| 欧美家庭影院| 超碰97在线播放| 欧美激情麻豆| 又色又爽又黄18网站| 亚洲精品国产高清久久伦理二区| 国产麻豆免费视频| 久久久成人精品| 伊人久久大香| 日韩专区第三页| 成人免费毛片片v| 日韩激情在线播放| 亚洲第一网中文字幕| 国产无遮挡裸体视频在线观看| 国产亚洲情侣一区二区无| 一本色道久久| 性少妇bbw张开| 在线看日本不卡| 午夜激情视频在线| 91在线看www| 激情一区二区| 欧美 日本 国产| 欧洲精品视频在线观看| 一区二区高清不卡| 亚洲一区二区三区在线免费观看| 欧美精品三级| 五月开心播播网| 91成人免费在线| 蜜桃视频在线观看www社区| 亚洲精品欧美日韩| 亚洲一级网站| 少妇真人直播免费视频| 欧美午夜精品久久久久久超碰| 在线免费看黄网站| 91精品久久香蕉国产线看观看| 亚洲第一毛片| 法国空姐电影在线观看| 欧美美女喷水视频| 免费看电影在线| 免费看成人午夜电影| 美日韩一级片在线观看| 麻豆亚洲av熟女国产一区二| 日韩精品视频在线| 九七影院97影院理论片久久| 白白操在线视频| 久久精品亚洲国产奇米99| 亚洲天堂男人网| 高清欧美电影在线| 精品久久不卡| 折磨小男生性器羞耻的故事| 色av一区二区| 日本在线视频中文有码| 日本不卡一区二区三区视频| 国模无码大尺度一区二区三区| 欧美成人aaaaⅴ片在线看| 中文字幕av一区中文字幕天堂| av成人资源| 国产精品久久久毛片| 午夜久久电影网| 色网站免费在线观看| 免费一区二区三区| 国产精品一区二区黑丝| 少妇久久久久久久|