中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解Go語言的切片

發布時間:2021-10-08 13:52:21 來源:億速云 閱讀:116 作者:iii 欄目:開發技術

這篇文章主要講解了“如何理解Go語言的切片”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何理解Go語言的切片”吧!

目錄
  • 一、定義切片

    • 1、聲明一個未指定大小的數組來定義切片

    • 2、使用make()函數來創建切片

  • 二、切片是可索引的

    • 1、len() 和 cap() 函數

  • 三、切片截取

    • 四、增加切片的容量

      說明:

      Go 語言切片是對數組的抽象。

      Go 數組的長度不可改變,在特定場景中這樣的集合就不太適用,Go中提供了一種靈活,功能強悍的內置類型切片("動態數組"),與數組相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。

      一、定義切片

      注意:切片不需要說明長度

      1、聲明一個未指定大小的數組來定義切片

      var identifier []type
      //例如
      var slice []int

      2、使用make()函數來創建切片

      var slice1 []type = make([]type, len)
      //也可以簡寫為
      slice1 := make([]type, len)
      //例如
      slice := make([]type, len)

      二、切片是可索引的

      1、len() 和 cap() 函數

      可以由 len() 方法獲取長度。

      切片提供了計算容量的方法 cap() 可以測量切片最長可以達到多少

      package main
      
      import "fmt"
      
      func main(){
          var number = make([]int,3,5)
          fmt.Printf("len=%d cap=%d         slice=%v\n",len(number),cap(number),number)
      }
      
      //len=3 cap=5 slice=[0 0 0]

      2、空(nil)切片

      一個切片在未初始化之前默認為 nil,長度為 0

      package main
      
      import "fmt"
      
      func main(){
          var number []int
          fmt.Printf("len=%d cap=%d slice=%v\n",len(number),cap(number),number)
      }
      
      //len=0 cap=0 slice=[]

      三、切片截取

      可以通過設置下限及上限來設置截取切片 [lower-bound:upper-bound]

      package main
      
      import "fmt"
      
      func main() {
          //創建切片
          number := []int{0, 1, 2, 3, 4, 5, 6, 7, 8}
          printSlice(number)
      
          //打印原始切片
          fmt.Println("number == ", number)
      
          //打印子切片從索引1到索引4
          fmt.Println("number == ", number[1:4])
      
          //打印子切片默認下限
          fmt.Println("number == ", number[:3])
      
          //打印子切片默認上限
          fmt.Println("number == ", number[4:])
      
      }
      
      func printSlice(x []int) {
          fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x)
      }

      結果:

      如何理解Go語言的切片

      四、增加切片的容量

      原理:創建一個新的更大的切片并把原分片的內容都拷貝過來

      append() 和 copy() 函數
      package main
      
      import (
          "fmt"
      )
      
      func main() {
          //創建切片
          var number []int
          printSlice(number)
      
          //允許追加空切片
          number = append(number,0)
          printSlice(number)
      
          //向切片添加一個元素
          number = append(number,1)
          printSlice(number)
      
          //同時添加多個元素
          number = append(number,2,3,4)
          printSlice(number)
      
          //創建的新的切片是之前的切片容量的兩倍
          number1 := make([]int,len(number),(cap(number))*2)
      
          //拷貝number的內容到number1中
          copy(number1,number)
          printSlice(number1)
      }
      
      func printSlice(x []int) {
          fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x)
      }

      感謝各位的閱讀,以上就是“如何理解Go語言的切片”的內容了,經過本文的學習后,相信大家對如何理解Go語言的切片這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

      向AI問一下細節

      免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

      go
      AI

      江达县| 南陵县| 清河县| 桐乡市| 大洼县| 南通市| 资讯| 林芝县| 嘉祥县| 桐城市| 石阡县| 分宜县| 吉首市| 凉城县| 万安县| 阿图什市| 随州市| 乃东县| 麟游县| 梨树县| 阳城县| 新乐市| 基隆市| 密云县| 聂拉木县| 天水市| 泰宁县| 建宁县| 乾安县| 山丹县| 临泉县| 五家渠市| 咸宁市| 新民市| 南华县| 济阳县| 华池县| 聊城市| 黔西| 哈尔滨市| 达州市|