2024年最新golang基础教程(八)、切片,2024年最新【性能优化实战

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

golang基础教程

一、切片的基本介绍

  1. 切片的英文是 slice
  2. 切片是数组的一个引用,因此切片是引用类型,在进行传递时,遵守引用传递的机制。
  3. 切片的使用和数组类似,遍历切片、访问切片的元素和求切片长度 len(slice)都一样。
  4. 切片的长度是可以变化的,因此切片是一个可以动态变化数组。
  5. 切片定义的基本语法:
    var 切片名 []类型
    比如:var a [] int

示例:

func main() {
	var arr = [...]string{"张学友","刘德华","黎明","郭富城","成龙","周星驰"}
	slice :=arr[1:3:5]
	fmt.Printf("slice容量:%d,长度:%d,值:%v\n",cap(slice),len(slice),slice)
	fmt.Printf("slice地址:%p",slice)
}

slice容量:4,长度:2,值:[刘德华 黎明]
slice地址:0xc000084130

二、切片在内存中形式

在这里插入图片描述
总结:
从上面可以看到

  1. slice的确是一个引用类型
  2. slice 从底层来说,其实就是一个数据结构(struct结构体)
type slice struct {
   ptr  \*[2]int
   len  int
   cap  int
}

三、切片的使用

1、切片的定义
  1. 第一种方式

定义一个切片,然后让切片去引用一个已经创建好的数组,比如前面的案例就是这
样的。

slice :=arr[a:b:c]

a:起始位置
b:截取数据的结束位置 默认到末端)
c:截取后的容量位置 默认到末端)
slice的len = b - a
slice的cap = c - a
底层数组: 为原数组的下标a到下标b(不包括)的所有元素

  1. 第二种方式:

通过 make 来创建切片
基本语法:var 切片名 []type = make([]type, len, [cap])

参数说明:
type: 就是数据类型
len : 大小
cap :指定切片容量,可选, 如果你分配了 cap,则要求 cap>=len.

func main() {
	slice :=make([]int,3,5)
	slice[0] = 100
	slice[1] = 200
	slice[2] = 300
	fmt.Printf("slice容量:%d,长度:%d,值:%v\n",cap(slice),len(slice),slice)
	fmt.Printf("slice地址:%p\n",slice)
	//slice[3] = 400 //runtime error: index out of range 报错
	slice = append(slice, 400)
	slice = append(slice, 500)
	fmt.Printf("slice容量:%d,长度:%d,值:%v\n",cap(slice),len(slice),slice)
	fmt.Printf("slice地址:%p\n",slice)
	slice = append(slice, 600)
	fmt.Printf("slice容量:%d,长度:%d,值:%v\n",cap(slice),len(slice),slice)
	fmt.Printf("slice地址:%p",slice)


![img](https://img-blog.csdnimg.cn/img_convert/1e78a71e1e3d495d69f576988f4a749d.png)
![img](https://img-blog.csdnimg.cn/img_convert/e296337333389ccaf76598b1bcc5a87a.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

获取](https://bbs.csdn.net/topics/618658159)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值