您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何理解Go語言的切片”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何理解Go語言的切片”吧!
一、定義切片
1、聲明一個未指定大小的數組來定義切片
2、使用make()函數來創建切片
二、切片是可索引的
1、len() 和 cap() 函數
三、切片截取
四、增加切片的容量
說明:
Go 語言切片是對數組的抽象。
Go 數組的長度不可改變,在特定場景中這樣的集合就不太適用,Go中提供了一種靈活,功能強悍的內置類型切片("動態數組"),與數組相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。
注意:切片不需要說明長度
var identifier []type //例如 var slice []int
var slice1 []type = make([]type, len) //也可以簡寫為 slice1 := make([]type, len) //例如 slice := make([]type, len)
可以由 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) }
結果:
原理:創建一個新的更大的切片并把原分片的內容都拷貝過來
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語言的切片這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。