专栏首页Golang语言社区Golang语言社区-【基础知识】切片

Golang语言社区-【基础知识】切片

Go编程切片是一种抽象了Go编程数组。由于Go编程数组允许您定义的变量,可容纳同类的几个数据项类型,但它不提供任何内置的方法来动态地增加它的大小或得到一个子数组自身。切片覆盖这一限制。它提供了数组所需的多种效用函数,被广泛应用在Go编程。

定义切片

要定义一个切片,你可以声明它作为一个数组时,不需要指定大小或使用make函数来创建。

var numbers []int /* a slice of unspecified size */
/* numbers == []int{0,0,0,0,0}*/
numbers = make([]int,5,5) /* a slice of length 5 and capacity 5*/

len() 和 cap() 函数

由于切片是一种抽象数组。它实际上使用数组作为底层structure.len()函数返回的元素呈现在cap()函数返回切片作为多少元素,它可以容纳的容量的切片。以下为例子来解释片的使用:

当上述代码被编译和执行时,它产生了以下结果:

len=3 cap=5 slice=[0 0 0]

Nil 切片

如果一个切片,没有输入默认声明,它被初始化为为nil。其长度和容量都为零。下面是一个例子:

子切片

切片允许设置下限和上限进行指定,以得到它使用的子片[下限:上限]。下面是一个例子:

当上述代码被编译和执行时,它产生了以下结果:

len=9 cap=9 slice=[0 1 2 3 4 5 6 7 8]
numbers == [0 1 2 3 4 5 6 7 8]
numbers[1:4] == [1 2 3]
numbers[:3] == [0 1 2]
numbers[4:] == [4 5 6 7 8]
len=0 cap=5 slice=[]
len=2 cap=9 slice=[0 1]
len=3 cap=7 slice=[2 3 4]

append() 和 copy() 函数

Slice允许增加使用切片的append()函数。使用copy()函数,源切片的内容复制到目标切片。下面是一个例子:

当上述代码被编译和执行时,它产生了以下结果:

len=0 cap=0 slice=[]
len=1 cap=2 slice=[0]
len=2 cap=2 slice=[0 1]
len=5 cap=8 slice=[0 1 2 3 4]
len=5 cap=16 slice=[0 1 2 3 4]

本文分享自微信公众号 - Golang语言社区(Golangweb)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-06-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Golang语言社区--基础篇】Go 语言切片(Slice)

    Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组...

    李海彬
  • Go 语言切片(Slice)

    Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组...

    李海彬
  • Go 语言切片(Slice)

    Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组...

    李海彬
  • 第23节 切片(Slice)

    Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组...

    小尘哥
  • 【Golang语言基础】Go 语言切片(Slice)

    Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组...

    李海彬
  • 【Golang语言社区--基础篇】Go 语言切片(Slice)

    Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组...

    李海彬
  • Go 语言切片(Slice)

    Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组...

    李海彬
  • Go 语言切片(Slice)

    Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组...

    李海彬
  • golang学习笔记10:数组切片Slice

    JKXQJ
  • 浅析网站不被搜索引擎收录的原因

    以前总是说,怎样让搜索引擎收录我们的网站,如何让搜索引擎带来流量,但是总有小伙伴不走寻常路,或者这种不寻常路是对的,百度为什么不收录我的网站呢?我也提交了啊,也...

    乐网网络

扫码关注云+社区

领取腾讯云代金券