切片與數組類似,但更強大和靈活。與數組一樣,切片也用於在單個變數中存儲相同類型的多個值。然而,與數組不同的是,切片的長度可以根據需要增長和縮小。在 Go 中,有幾種創建切片的方法: 1. 使用`[]datatype{values}`格式 2. 從數組創建切片 3. 使用 `make()`函數 使用 ...
切片與數組類似,但更強大和靈活。與數組一樣,切片也用於在單個變數中存儲相同類型的多個值。然而,與數組不同的是,切片的長度可以根據需要增長和縮小。在 Go 中,有幾種創建切片的方法:
- 使用
[]datatype{values}
格式 - 從數組創建切片
- 使用
make()
函數
使用 []datatype{values}
格式創建切片
語法:
slice_name := []datatype{values}
一個常見的聲明切片的方式如下:
myslice := []int{}
上面的代碼聲明瞭一個空切片,長度為 0,容量為 0。
要在聲明時初始化切片,可以使用以下方式:
myslice := []int{1, 2, 3}
上面的代碼聲明瞭一個長度為 3 的整數切片,容量也為 3。在 Go 中,有兩個函數可以用來返回切片的長度和容量:
len()
函數:返回切片的長度(切片中元素的數量)cap()
函數:返回切片的容量(切片可以增長或縮小到的元素數量)
示例:
package main
import (
"fmt"
)
func main() {
myslice1 := []int{}
fmt.Println(len(myslice1))
fmt.Println(cap(myslice1))
fmt.Println(myslice1)
myslice2 := []string{"Go", "切片", "很", "強大"}
fmt.Println(len(myslice2))
fmt.Println(cap(myslice2))
fmt.Println(myslice2)
}
結果:
0
0
[]
4
4
[Go 切片 很 強大]
在上面的示例中,第一個切片 myslice1
中未指定實際元素,因此切片的長度和容量都為零。而第二個切片 myslice2
中指定了元素,因此長度和容量都等於實際元素的數量。
從數組創建切片
可以通過對數組進行切片來創建切片:
語法:
var myarray = [length]datatype{values} // 一個數組
myslice := myarray[start:end] // 從數組創建的切片
示例:
package main
import (
"fmt"
)
func main() {
arr1 := [6]int{10, 11, 12, 13, 14, 15}
myslice := arr1[2:4]
fmt.Printf("myslice = %v\n", myslice)
fmt.Printf("length = %d\n", len(myslice))
fmt.Printf("capacity = %d\n", cap(myslice))
}
結果:
myslice = [12 13]
length = 2
capacity = 4
在上面的示例中,myslice
是一個長度為 2 的切片,它是從長度為 6 的數組 arr1
創建的。切片從數組的第二個元素(值為 12)開始,可以增長到數組的末尾,因此切片的容量為 4。
如果 myslice
從數組的第一個元素開始,切片的容量將為 6。
使用 make()
函數創建切片
也可以使用 make()
函數來創建切片:
語法:
slice_name := make([]type, length, capacity)
註意:如果不定義容量參數,容量將等於長度。
示例:
package main
import (
"fmt"
)
func main() {
myslice1 := make([]int, 5, 10)
fmt.Printf("myslice1 = %v\n", myslice1)
fmt.Printf("length = %d\n", len(myslice1))
fmt.Printf("capacity = %d\n", cap(myslice1))
// 省略容量參數
myslice2 := make([]int, 5)
fmt.Printf("myslice2 = %v\n", myslice2)
fmt.Printf("length = %d\n", len(myslice2))
fmt.Printf("capacity = %d\n", cap(myslice2))
}
結果:
myslice1 = [0 0 0 0 0]
length = 5
capacity = 10
myslice2 = [0 0 0 0 0]
length = 5
capacity = 5
這個示例演示瞭如何使用 make()
函數創建切片。希望這篇文章有助於你理解 Go 中切片的概念和用法。
最後
為了方便其他設備和平臺的小伙伴觀看往期文章,鏈接奉上:
公眾號搜索Let us Coding
,知乎,開源中國,CSDN,思否,掘金,InfoQ,簡書,博客園,慕課,51CTO,helloworld,騰訊開發者社區,阿裡開發者社區
看完如果覺得有幫助,歡迎點贊、收藏和關註