https://qcrao91.gitbook.io/go/

数组和切片

● 切片作为函数参数
● 切片的容量是怎样增长的
● 数组和切片有什么异同

编译和链接

● 逃逸分析是怎么进行的

interface

● Go 语言与鸭子类型的关系
● 值接收者和指针接收者的区别
● iface 和 eface 的区别是什么
● 接口的动态类型和动态值
● 编译器自动检测类型是否实现接口
● 接口的构造过程是怎样的
● 类型转换和断言的区别
● 接口转换的原理
● 如何用 interface 实现多态
● Go 接口与 C++ 接口有何异同

反射

● 什么是反射
● 什么情况下需要使用反射
● Go 语言如何实现反射
● Go 语言中反射有哪些应用
● 如何比较两个对象完全相同

map

● map 的底层实现原理是什么
● 如何实现两种 get 操作
● map 的遍历过程是怎样的
● map 的赋值过程是怎样的
● map 的删除过程是怎样的
● map 的扩容过程是怎样的
● map 中的 key 为什么是无序的
● float 类型可以作为 map 的 key 吗
● 可以边遍历边删除吗
● 可以对 map 的元素取地址吗
● 如何比较两个 map 相等
● map 是线程安全的吗

标准库

unsafe

● Go 指针和 unsafe.Pointer 有什么区别
● 如何利用 unsafe 获取 slice & map 的长度
● 如何利用 unsafe 包修改私有成员
● 如何实现字符串和 byte 切片的零拷贝转换

context

● context 是什么
● context 有什么作用
● context.Value 的查找过程是怎样的
● context 如何被取消