栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

第006节:切片(Slice)的初步使用

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第006节:切片(Slice)的初步使用

1.1 什么是切片

Go 语言切片是对数组的抽象。
Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大

切片是一种方便、灵活且强大的包装器。切片本身没有任何数据。它们只是对现有数组的引用。

切片与数组相比,不需要设定长度,在[]中不用设定值,相对来说比较自由

从概念上面来说slice像一个结构体,这个结构体包含了三个元素:

    指针,指向数组中slice指定的开始位置长度,即slice的长度最大长度,也就是slice开始位置到数组的最后位置的长度

1.2 切片的语法

定义切片

var identifier []type

切片不需要说明长度。
或使用make()函数来创建切片:

var slice1 []type = make([]type, len)也可以简写为slice1 := make([]type, len)
make([]T, length, capacity)

初始化

s[0] = 1s[1] = 2s[2] = 3
s :=[] int {1,2,3 } 
s := arr[startIndex:endIndex] 

将arr中从下标startIndex到endIndex-1 下的元素创建为一个新的切片(前闭后开),长度为endIndex-startIndex

s := arr[startIndex:] 

缺省endIndex时将表示一直到arr的最后一个元素

s := arr[:endIndex] 

缺省startIndex时将表示从arr的第一个元素开始

package mainimport (      "fmt")func main() {      a := [5]int{76, 77, 78, 79, 80}    var b []int = a[1:4] //creates a slice from a[1] to a[3]    fmt.Println(b)}

1.3 修改切片

slice没有自己的任何数据。它只是底层数组的一个表示。对slice所做的任何修改都将反映在底层数组中。

示例代码:

package mainimport (      "fmt")func main() {      darr := [...]int{57, 89, 90, 82, 100, 78, 67, 69, 59}    dslice := darr[2:5]    fmt.Println("array before",darr)    for i := range dslice {        dslice[i]++    }    fmt.Println("array after",darr) }

运行结果:

array before [57 89 90 82 100 78 67 69 59]  array after [57 89 91 83 101 78 67 69 59]  

当多个片共享相同的底层数组时,每个元素所做的更改将在数组中反映出来。

示例代码:

package mainimport (      "fmt")func main() {      numa := [3]int{78, 79 ,80}    nums1 := numa[:] //creates a slice which contains all elements of the array    nums2 := numa[:]    fmt.Println("array before change 1",numa)    nums1[0] = 100    fmt.Println("array after modification to slice nums1", numa)    nums2[1] = 101    fmt.Println("array after modification to slice nums2", numa)}

运行结果:

array before change 1 [78 79 80]  array after modification to slice nums1 [100 79 80]  array after modification to slice nums2 [100 101 80]  
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/793599.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号