切片在使用之前必须要初始化,它没有零值。声明后它的值是 nil
package main
import "fmt"
func main() {
var a []int
fmt.Println("初始化前:", a)
a = make([]int, 5, 10)
fmt.Println("初始化后:", a)
a[4] = 6
fmt.Println("赋值后:", a)
}
初始化前: []
初始化后: [0 0 0 0 0]
赋值后: [0 0 0 0 6]
可以从任意长度开始切,切到任意长度为止,然后这一段拿出来就是一个新的切片
package main
import "fmt"
func main() {
var a = []int{1, 2, 3, 4, 5}
fmt.Println("a[1:3]=", a[1:3])
fmt.Println("a[1:]=", a[1:])
fmt.Println("a[:3]=", a[:3])
}
a[1:3]= [2 3]
a[1:]= [2 3 4 5]
a[:3]= [1 2 3]
package main
import "fmt"
func main() {
var a = []int{1, 2, 3, 4, 5}
a = append(a, 6)
fmt.Println(a)
a = append(a, 7, 8)
fmt.Println(a)
b := []int{9, 10}
a = append(a, b...)
fmt.Println(a)
}
[1 2 3 4 5 6]
[1 2 3 4 5 6 7 8]
[1 2 3 4 5 6 7 8 9 10]
在切片中可以使用len()获取切片中元素的数量,也就是切片的长度。使用cap()可以获取切片引用的数组的长度,也就切片的容量
s[begin?max]
截取切片s从begin到end的数据,构成一个容量为max-begin,长度为begin-end的切片。
s[begin:end]
截取切片s从begin到end的数据,构成一个容量和长度均为begin-end的切片。
s[begin:]
截取切片s从begin到最后的数据,构成一个容量和长度均为len(s)-end的切片。
s[:end]
截取切片s从0到最后的数据,构成一个容量和长度均为end-0的切片。
package main
import "fmt"
func main() {
var a = []int{1, 2, 3, 4, 5}
fmt.Printf("a的地址%p,a的长度%d,a的容量%d\n", a, len(a), cap(a))
a = append(a, 6)
fmt.Printf("a的地址%p,a的长度%d,a的容量%d\n", a, len(a), cap(a))
a = append(a, 7, 8)
fmt.Printf("a的地址%p,a的长度%d,a的容量%d\n", a, len(a), cap(a))
b := []int{9, 10, 11}
a = append(a, b...)
fmt.Printf("a的地址%p,a的长度%d,a的容量%d\n", a, len(a), cap(a))
}
a的地址0xc0000aa030,a的长度5,a的容量5
a的地址0xc0000ba000,a的长度6,a的容量10
a的地址0xc0000ba000,a的长度8,a的容量10
a的地址0xc0000bc000,a的长度11,a的容量20
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。