后端学习路线指南
golang 入门指南
导读:对于我个人来说,学习基础知识是枯燥且乏味的,基础知识是那种一看就会,一问就忘的存在,但是偏偏是最重要且基础的。所以写这篇系列的原因也是希望能够回顾下基础知识。
基本的数据结构
分类里是一些常用的数据结构,没有进行更加详细的分类
slice
slice切片是在程序开发中最常用的数据结构,同时也是在面试中出现频率最高的数据结构,在百分之99的面试中,都会出现。所以还是要好好了解
slice的底层设计
导读:slice 切片也被很多人称为动态数组(数组大家都很了解),这种说法很形象,因为在上层使用上来说,切片和数据的使用方式基本上一模一样, 切片的使用比数组的使用更加简单。
切片的使用
- 创建一个空切片
s := []string{}
- 创建一个切片指针
s:= make([]string, 10)
是不是很简答。
切片的底层结构
- 切片的结构体
type SliceHeader struct {
Data uintptr
Len int
Cap int
}
- Data 是指向底层数据结构的指针。
- Len 是切片的长度
- Cap 是切片的容量,且Cap一定比Len大
- 切片的底层实现
在上述图中其实我们能够很清晰的看到切片的底层是如何实现的,我们可以在运行时对切片进行动态的扩容,当切片的大小变化时那么底层的数据就会相应的改变。 但是对于上层的调用方式无感知的。
slice和数组的区别
-
区别一:
数组是值传递,每次作为参数传递给其他的函数时 从事copy一份副本 切边是引用专递
-
区别二: 切片是可以扩容,但是数组不可以。
总结:每天记录一个跳槽小妙招,卟灵不灵