Golang中的数组切片

数组切片和数组在Go语言中不是同一种数据类型,但他们很相似,区别是数组只能是固定长度,而数组切片可灵活的改变长度。

var myArray [10]int //这是一个数组,长度固定
var mySlice []int //这是一个数组切片

数组切片的创建方式:

var myArray [5]int = [5] int{1,2,3,4,5} //创建一个长度为5的int数组
var mySlice []int=myArray[:] //基于数组创建一个数组切片

Go语言支持myArray[first:last]这样的方式来基于数组生成一个数组切片,这个方法很灵活:

mySlice = myArray[:]//基于myArray的所有元素创建
mySlice = myArray[:5]//基于myArray的前5个元素创建
mySlice = myArray[5:]//基于从myArray的第5个元素开始的所有元素创建

看个例子:

package main
 
import (
"fmt"
)
 
func main() {
var myArray [10]int = [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
var mySliceA []int = myArray[:]
var mySliceB []int = myArray[:5]
var mySliceC []int = myArray[5:]
 
fmt.Println(mySliceA, mySliceB, mySliceC)
 
}

程序输出为:

[0 1 2 3 4 5 6 7 8 9] [0 1 2 3 4] [5 6 7 8 9]

除了这种方式外,还可以使用make()函数创建数组切片;

mySlice := make([]int,5,10)

第二个参数为起始的元素个数,第三个参数为预留的存储空间(省缺);为什么要预留空间这里就不细说,当数组切片的元素超过预留元素时,它会自动申请新的空间。

可使用cap()函数查看数组切片的预留空间,使用len()函数查看数组切片的元素个数。

mySliceD := make([]int, 5, 10)
fmt.Println(cap(mySliceD), len(mySliceD))

程序将打印10,5

遍历数组切片:

其方法与数组一样,且支持range:

for i, v := range mySlice {
fmt.Println("mySlice[", i, "] =", v)
}

为数据切片增加新的元素,可使用append()函数。

mySliceA = append(mysliceA,1,2,3)
var myArray [10]int = [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
var mySliceA []int = myArray[:]
 
mySliceA = append(mySliceA, 77, 88, 99)
fmt.Println(mySliceA)

append()方法的第二个参数是一个不定参数,我们可以直接追加一个数组切片:

mySliceA = append(mySliceA, []int{77, 88, 99}...)

这里[]int{77,99,99}是一个数组切片,并不是一个数组,因为没有为其指定长度。

数组切片后面跟有三个点 …,这是Golang中的一个语法糖,相当于将数组切片中的所有元素打散传入。

除了上述的几种创建方法外,还可以基于数组切片创建,将其当成数组一样即可。

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/1477.html

分类: 计算机技术
推荐阅读:
使用pyi-set_version为PyInstaller打包出来的程序附加版本信息 本文将讲述如何使用 pyi-grab_version 获取版本信息的模板文件,以及使用 pyi-set_version 为打包好的程序附加版本信息。
如何查看CPU的出厂日期 通常情况下,CPU的出厂日期是写在CPU的标签或者包装盒上的。如果您已经安装了CPU,则可以通过操作系统或者第三方软件来查看CPU的出厂日期。以下是一些方法:
如何删除一个已发布的crate 实际上,我们可以联系crates.io的技术支持团队,要求删除一些没有意义的crate,这些crate通常没人使用,不包含有意义的代码;
在Linux终端右上角实时显示时间 在Linux系统下,可以通过一条命令在终端的右上角显示当前系统的时间:
使用Python爬取网页上的所有链接 要使用Python爬取网页上的所有链接,可以使用Python的requests库和BeautifulSoup库。
SEO基础:TKD是什么意思? TKD其实就是HTML语言中title、keywords、description的缩写;