• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

Go语言中slice的用法代码示范

go 水墨上仙 2843次浏览

slice 指向数组的值,并且同时包含了长度信息。
[]T 是一个元素类型为 T 的 slice。

package main
import "fmt"
func main() {
	p := []int{2, 3, 5, 7, 11, 13}
	fmt.Println("p ==", p)
	for i := 0; i < len(p); i++ {
		fmt.Printf("p[%d] == %d\n",
			i, p[i])
	}
}

slice&nbsp可以重新切片,创建一个新的&nbspslice&nbsp值指向相同的数组。

表达式

s[lo:hi]
表示从&nbsplo&nbsp到&nbsphi-1&nbsp的&nbspslice&nbsp元素,含有两端。&nbsp因此

s[lo:lo]
是空的,而

s[lo:lo+1]
有一个元素。

package main
import "fmt"
func main() {
	p := []int{2, 3, 5, 7, 11, 13}
	fmt.Println("p ==", p)
	fmt.Println("p[1:4] ==", p[1:4])
	// missing low index implies 0
	fmt.Println("p[:3] ==", p[:3])
	// missing high index implies len(s)
	fmt.Println("p[4:] ==", p[4:])
}

slice&nbsp由函数&nbspmake&nbsp创建。这会分配一个零长度的数组并且返回一个&nbspslice&nbsp指向这个数组:

a&nbsp:=&nbspmake([]int,&nbsp5)&nbsp&nbsp//&nbsplen(a)=5
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
slice&nbsp有长度和容量。slice&nbsp的容量是底层数组可以增长的最大长度。
为了指定容量,可传递第三个参数到&nbspmake:

b&nbsp:=&nbspmake([]int,&nbsp0,&nbsp5)
//&nbsplen(b)=0,&nbspcap(b)=5
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
slice&nbsp可以通过“重新切片”来扩容(增长到容量上限):
b&nbsp=&nbspb[:cap(b)]&nbsp//&nbsplen(b)=5,&nbspcap(b)=5
b&nbsp=&nbspb[1:]&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp//&nbsplen(b)=4,&nbspcap(b)=4

package main
import "fmt"
func main() {
	a := make([]int, 5)
	printSlice("a", a)
	b := make([]int, 0, 5)
	printSlice("b", b)
	c := b[:2]
	printSlice("c", c)
	d := c[2:5]
	printSlice("d", d)
}
func printSlice(s string, x []int) {
	fmt.Printf("%s len=%d cap=%d %v\n",
		s, len(x), cap(x), x)
}

slice&nbsp的零值是&nbspnil。

一个&nbspnil&nbsp的&nbspslice&nbsp的长度和容量是&nbsp0。

package main
import "fmt"
func main() {
	var z []int
	fmt.Println(z, len(z), cap(z))
	if z == nil {
		fmt.Println("nil!")
	}
}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明Go语言中slice的用法代码示范
喜欢 (0)
加载中……