golang 学习指南(一)

356 阅读2分钟

后端学习路线指南

golang 入门指南

导读:对于我个人来说,学习基础知识是枯燥且乏味的,基础知识是那种一看就会,一问就忘的存在,但是偏偏是最重要且基础的。所以写这篇系列的原因也是希望能够回顾下基础知识。

基本的数据结构

分类里是一些常用的数据结构,没有进行更加详细的分类

slice

slice切片是在程序开发中最常用的数据结构,同时也是在面试中出现频率最高的数据结构,在百分之99的面试中,都会出现。所以还是要好好了解

slice的底层设计

导读:slice 切片也被很多人称为动态数组(数组大家都很了解),这种说法很形象,因为在上层使用上来说,切片和数据的使用方式基本上一模一样, 切片的使用比数组的使用更加简单。

切片的使用

  1. 创建一个空切片
s := []string{}
  1. 创建一个切片指针
s:= make([]string, 10)

是不是很简答。

切片的底层结构

  1. 切片的结构体
type SliceHeader struct {
	Data uintptr
	Len  int
	Cap  int
}
  • Data 是指向底层数据结构的指针。
  • Len 是切片的长度
  • Cap 是切片的容量,且Cap一定比Len大
  1. 切片的底层实现

在上述图中其实我们能够很清晰的看到切片的底层是如何实现的,我们可以在运行时对切片进行动态的扩容,当切片的大小变化时那么底层的数据就会相应的改变。 但是对于上层的调用方式无感知的。

slice和数组的区别

  • 区别一:

    数组是值传递,每次作为参数传递给其他的函数时 从事copy一份副本 切边是引用专递

  • 区别二: 切片是可以扩容,但是数组不可以。

总结:每天记录一个跳槽小妙招,卟灵不灵