当前位置:   article > 正文

Go语言自学系列 | golang切片的初始化_golang 切片初始化

golang 切片初始化

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-CSDN博客


切片的初始化方法很多,可以直接初始化,也可以使用数组初始化等。

切片如何切分

  1. package main
  2. import "fmt"
  3. // 切片
  4. func test1() {
  5. var s1 = []int{1, 2, 3, 4, 5, 6}
  6. s2 := s1[0:3] // [)
  7. fmt.Printf("s2: %v\n", s2)
  8. s3 := s1[3:]
  9. fmt.Printf("s3: %v\n", s3)
  10. s4 := s1[2:5]
  11. fmt.Printf("s4: %v\n", s4)
  12. s5 := s1[:]
  13. fmt.Printf("s5: %v\n", s5)
  14. }
  15. func main() {
  16. test1()
  17. }

运行结果

  1. [Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
  2. s2: [1 2 3]
  3. s3: [4 5 6]
  4. s4: [3 4 5]
  5. s5: [1 2 3 4 5 6]

直接初始化

  1. package main
  2. import "fmt"
  3. func main() {
  4. s := []int{1, 2, 3}
  5. fmt.Printf("s: %v\n", s)
  6. }

运行结果

  1. [Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
  2. s: [1 2 3]

使用数组初始化

  1. package main
  2. import "fmt"
  3. func main() {
  4. arr := [...]int{1, 2, 3}
  5. s1 := arr[:]
  6. fmt.Printf("s1: %v\n", s1)
  7. }

运行结果

  1. [Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
  2. s1: [1 2 3]

使用数组的部分元素初始化(切片表达式)

切片的底层就是一个数组,所以我们可以基于数组通过切片表达式得到切片。 切片表达式中的low和high表示一个索引范围(左包含,右不包含),得到的切片长度=high-low,容量等于得到的切片的底层数组的容量。

  1. package main
  2. import "fmt"
  3. func main() {
  4. arr := [...]int{1, 2, 3, 4, 5, 6}
  5. s1 := arr[2:5]
  6. fmt.Printf("s1: %v\n", s1)
  7. s2 := arr[2:]
  8. fmt.Printf("s2: %v\n", s2)
  9. s3 := arr[:3]
  10. fmt.Printf("s3: %v\n", s3)
  11. }

运行结果

  1. [Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
  2. s1: [3 4 5]
  3. s2: [3 4 5 6]
  4. s3: [1 2 3]

空(nil)切片

一个切片在未初始化之前默认为 nil,长度为 0,容量为0.

  1. package main
  2. import "fmt"
  3. func main() {
  4. var s1 []int
  5. fmt.Println(s1 == nil)
  6. fmt.Printf("len: %d, cap: %d\n", len(s1), cap(s1))
  7. }

运行结果

  1. [Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
  2. true
  3. len: 0, cap: 0
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/206362
推荐阅读
相关标签
  

闽ICP备14008679号