您的位置:首页 > 编程语言 > Go语言

go数组切片

2017-08-01 10:59 344 查看
数组切片:

数组的长度在定义之后无法再次修改;数组是值类型,每次传递都将产生一份副本。显然这种数据结构无法完全满足开发者的真实需求。

组切片就像一个指向数组的指针,实际上它拥有自己的数据结构,而不仅仅是个指针。数组切片的数据结构可以抽象为以下3个变量:

一个指向原生数组的指针;

数组切片中的元素个数;

数组切片已分配的存储空间

基于数组,数组切片添加了一系列管理功能,可以随时动态扩充存放空间,并且可以被随意传递而不会导致所管理的元素被重复

复制。

创建数组切片:

* 创建数组切片的方法主要有两种——基于数组和直接创建

package main
import "fmt"

func main(){
var myArray [10]int =[10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

var mySlice []int = myArray[:5]

fmt.Println("Elements of myArray:")

for _,v := range mySlice {
fmt.Print(v,"")
}
fmt.Println()
}


基于myArray的所有元素创建数组切片:

mySlice = myArray[:]


基于myArray的前5个元素创建数组切片:

mySlice = myArray[:5]


基于从第5个元素开始的所有元素创建数组切片:

mySlice = myArray[5:]

数组切片支持Go语言内置的cap()函数和len()函数, cap()函数返回的是数组切片分配的空间大小,而len()函数返回的是

数组切片中当前所存储的元素个数。

package main
import "fmt"

func main() {
mySlice := make([]int, 5, 10)
fmt.Println("len(mySlice):", len(mySlice))
fmt.Println("cap(mySlice):", cap(mySlice))
}


数组切片支持Go语言的另一个内置函数copy(),用于将内容从一个数组切片复制到另一个,数组切片。如果加入的两个数组切片不一
4000
样大,就会按其中较小的那个数组切片的元素个数进行复制。

slice1 := []int{1,2,3,4,5}

slice2 := []int{5,4,3}

copy(slice2,slice1)

copy(slice1,slice2)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: