Golang入门-切片

本文详细介绍了Golang中的切片,包括切片的定义、长度和容量、基于数组和make()函数创建切片、切片的比较与赋值拷贝、遍历、append()方法的动态添加元素以及切片的扩容策略。通过实例展示了如何使用copy()函数复制切片,并提出了删除切片元素的方法。
摘要由CSDN通过智能技术生成

切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。

切片是一个引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合。
## 切片的定义
声明切片类型的基本语法如下:

var name []T

其中,

name:表示变量名
T:表示切片中的元素类型
举个例子:

func main() {
   
	// 声明切片类型
	var a []string              //声明一个字符串切片
	var b = []int{
   }             //声明一个整型切片并初始化
	var c = []bool{
   false, true} //声明一个布尔切片并初始化
	var d = []bool{
   false, true} //声明一个布尔切片并初始化
	fmt.Println(a)              //[]
	fmt.Println(b)              //[]
	fmt.Println(c)              //[false true]
	fmt.Println(a == nil)       //true
	fmt.Println(b == nil)       //false
	fmt.Println(c == nil)       //false
	// fmt.Println(c == d)   //切片是引用类型,不支持直接比较,只能和nil比较
}

## 切片的长度和容量

切片拥有自己的长度和容量,我们可以通过使用内置的len()函数求长度,使用内置的cap()函数求切片的容量。

## 基于数组定义切片

由于切片的底层就是一个数组,所以我们可以基于数组定义切片。

func main() {
   
	// 基于数组定义切片
	a := [5]int{
   55, 56, 57, 58, 59}
	b := a[1:4]                     //基于数组a创建切片,包括元素a[1],a[2],a[3]
	fmt.Println(b)                  //[56 57 58]
	fmt.Printf("type of b:%T\n", b) //type of b:[]int
}

支持如下方式:

c := a[1:] //[56 57 58 59]
d := a[:4] //[55 56 57 58]
e := a[:]  //[55 56 57 58 59]

## 切片再切片

除了基于数组得到切片,我们还可以通过切片来得到切片。

func main() {
   
	//切片再切片
	a := [...]string{
   "北京", "上海", "广州", "深圳", "成都", "重庆"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值