【go语言入门笔记】6、切片

切片一般用于快速地操作一块数据集合(数据集合包括数组)。
切片(slice)是对数组一个连续片段的引用,所以切片是一个引用类型。
如果将数据集合比作蛋糕的话,切片就是你要的“那一块”。
切的过程包含从哪里开始(这个就是切片的地址)及切多大(这个就是切片的大小)。
容量可以理解为装切片的那个盘子的大小

声明切片类型:var 切片名[]数据类型
var a []string              //声明一个字符串切片
var b = []int{}             //声明一个整型切片

1、从数组(或切片)生成新的切片

切片默认指向一段连续内存区域,可以是数组,也可以是切片本身。
从连续内存区域生成切片是常见的操作,格式如下:

 slice[开始位置:结束位置]
  • slice表示目标切片对象。
  • 开始位置对应目标切片对象的索引。
  • 结束位置对应目标切片的结束索引。
1.1从数组生成新的切片
从数组生成切片,代码如下:
package main
import "fmt"
func main() {
	var aa = [6]int{1, 2, 3, 4, 5, 6}
	bb := aa[0:4] //切片,从数组aa[0]-aa[3]
	fmt.Println(bb)
}

此时打印:
在这里插入图片描述

1.2 切片缺省参数规则
如果缺省第一个参数,则默认从开头位置开始

在这里插入图片描述

如果缺省第二个参数,则默认从第一个参数位置开始,一直到最后

在这里插入图片描述

如果两个参数都缺省,等于与目标数据集合等效

在这里插入图片描述

如果两个参数都为0,等于清空切片

例如:切片[0:0]

1.3 从切片生成新的切片
与数组生成基本一样

在这里插入图片描述

2、使用make函数构造切片

如果需要动态地创建一个切片,可以使用make()内建函数,格式如下:

make([]T,size,cap)
  • T:数据类型
  • size:切片大小(元素个数)
  • cap:预分配元素数量,提前分配空间,不影响size
    例如:
    在这里插入图片描述
    aa和bb均是预分配2个元素的切片,只是aa的内部存储空间已经分配了10个,但实际使用了2个元素。

3、使用append为切片添加元素

在这里插入图片描述

4、为切片删除元素

Go 语言并没有对删除切片元素提供专用的语法或者接口,需要使用切片本身的特性来删除元素。

代码如下:

package main

import (
	"fmt"
)

func main() {
	aa := []string{"a", "b", "c", "d", "e", "f"}
	index := 3              //要删除元素的位置,我们要删除d
	fmt.Println(aa[:index]) //表达式,要删除元素之前的所有元素
	fmt.Println(aa[index+1:])//表达式,要删除元素之后的所有元素
	aa = append(aa[:index], aa[index+1:]...)//用append函数拼接前后,完成删除
	fmt.Println(aa)
}

输出如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

藏蓝色攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值