前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Slice(切片)

Slice(切片)

作者头像
是小张啊喂
发布2022-08-18 17:32:01
7790
发布2022-08-18 17:32:01
举报
文章被收录于专栏:软件

什么是Slice(切片)?

切片是一个拥有相同类型元素的可变长度的序列.是基于数组类型做的一层封装

如何创建Slice(切片)

有两种创建方式:

  1. 可以通过已有的数组创建切片
代码语言:javascript
复制
语法:
arry := []
slice1:= arry[startIndex:endIndex]

number := []int{1, 3, 7, 2, 5}
slice1 := number[1:3]
fmt.Println(slice1) --- [3 7]

如果startIndex为空则从第一个元素开始

代码语言:javascript
复制
number := []int{1, 3, 7, 2, 5}
slice1 := number[:3]
fmt.Println(slice1) --- [1 3 7]

如果endIndex为空则直到最后一个元素3

代码语言:javascript
复制
number := []int{1, 3, 7, 2, 5}
slice1 := number[3:]
fmt.Println(slice1) --- [2 5]
  1. 直接创建 通过make函数定义一个切片
代码语言:javascript
复制
语法:
slice1 := make([]T, length, capacity)

T 为类型
length 为大小/容量

// 创建容量为5,数量为2的int切片数组
slice1 := make([]int, 2, 5)
// 初始化会放入两位为0的值
fmt.Println(slice1)  --- [0 0]

len() 和 cap() 函数

Slice是具有索引的,len()是获取切片的长度,cap()是获取切片的容量

代码语言:javascript
复制
// 创建容量为5,数量为2的int切片数组
slice1 := make([]int, 2, 5)
// 分别打印长度、容量、内容
fmt.Printf("len=%d cap=%d slice=%v\n", len(slice1), cap(slice1), slice1)

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

append() 和 copy() 函数

问题:无法向容量为0的切片中添加元素

代码语言:javascript
复制
// 创建一个容量为0的切片
slice1 := make([]int, 0)
// 向切片中放数据,下标越界
//slice1[0] = 10
// len=0 cap=0 slice=[]
printSlice(slice1)

// 定义一个打印切片信息的函数 打印内容包括长度、容量、元素内容
func printSlice(s []int) {
    fmt.Printf("len=%d cap=%d slice=%v\n", len(s), cap(s), s)
}

利用append()函数追加元素

代码语言:javascript
复制
// 创建一个容量为0的切片
slice1 := make([]int, 0)
// 向切片中放数据,下标越界
//slice1[0] = 10
printSlice(slice1)
// 利用 append() 函数追加元素
slice1 = append(slice1, 1, 2, 3)
// len=3 cap=3 slice=[1 2 3]
printSlice(slice1)

复制切片元素至另一个切片

代码语言:javascript
复制
// 创建一个大小容量一样的切片, 将数据复制到新的切片中
slice2 := make([]int, len(slice1), cap(slice1))
copy(slice2, slice1)
printSlice(slice2)

切片基于数组,在内存中修改了数组中的数据,切片数据也会随之改变

代码语言:javascript
复制
number := []int{1, 3, 7, 2, 5}
fmt.Println(number)
slice1 := number[:3]
printSlice(slice1)

number[0] = 9
fmt.Println(number)
printSlice(slice1)

[1 3 7 2 5]
len=3 cap=5 slice=[1 3 7]
[9 3 7 2 5]
len=3 cap=5 slice=[9 3 7]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Slice(切片)?
    • 如何创建Slice(切片)
      • len() 和 cap() 函数
        • append() 和 copy() 函数
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档