golang切片初始化的使用示例
切片的初始化方法很多,可以直接初始化,也可以使用数组初始化等。
切片如何切分
package main import "fmt" // 切片 func test1() { var s1 = []int{1, 2, 3, 4, 5, 6} s2 := s1[0:3] // [) fmt.Printf("s2: %v\n", s2) s3 := s1[3:] fmt.Printf("s3: %v\n", s3) s4 := s1[2:5] fmt.Printf("s4: %v\n", s4) s5 := s1[:] fmt.Printf("s5: %v\n", s5) } func main() { test1() }
运行结果
[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
s2: [1 2 3]
s3: [4 5 6]
s4: [3 4 5]
s5: [1 2 3 4 5 6]
直接初始化
package main import "fmt" func main() { s := []int{1, 2, 3} fmt.Printf("s: %v\n", s) }
运行结果
[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
s: [1 2 3]
使用数组初始化
package main import "fmt" func main() { arr := [...]int{1, 2, 3} s1 := arr[:] fmt.Printf("s1: %v\n", s1) }
运行结果
[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
s1: [1 2 3]
使用数组的部分元素初始化(切片表达式)
切片的底层就是一个数组,所以我们可以基于数组通过切片表达式得到切片。 切片表达式中的low和high表示一个索引范围(左包含,右不包含),得到的切片长度=high-low,容量等于得到的切片的底层数组的容量。
package main import "fmt" func main() { arr := [...]int{1, 2, 3, 4, 5, 6} s1 := arr[2:5] fmt.Printf("s1: %v\n", s1) s2 := arr[2:] fmt.Printf("s2: %v\n", s2) s3 := arr[:3] fmt.Printf("s3: %v\n", s3) }
运行结果
[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
s1: [3 4 5]
s2: [3 4 5 6]
s3: [1 2 3]
空(nil)切片
一个切片在未初始化之前默认为 nil,长度为 0,容量为0.
package main import "fmt" func main() { var s1 []int fmt.Println(s1 == nil) fmt.Printf("len: %d, cap: %d\n", len(s1), cap(s1)) }
运行结果
[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
true
len: 0, cap: 0
到此这篇关于golang切片初始化的使用示例的文章就介绍到这了,更多相关golang切片初始化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
go责任链行为型设计模式Chain Of Responsibility
这篇文章主要为大家介绍了go行为型设计模式之责任链Chain Of Responsibility使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-12-12
最新评论