Go FAQ
1. Go 语言在多个工作区中查找依赖包的时候是以怎样的顺序进行的?
2. 如果在多个工作区中都存在导入路径相同的代码包会产生冲突吗?
3. 默认情况下,我们可以让命令源码文件接受哪些类型的参数值?
4. 我们可以把自定义的数据类型作为参数值的类型吗?如果可以,怎样做?
5. 如果你需要导入两个代码包,而这两个代码包的导入路径的最后一级是相同的,比如:dep/lib/flag和flag,那么会产生冲突吗?
6. 如果会产生冲突,那么怎样解决这种冲突?有几种方式?
7. 如果与当前的变量重名的是外层代码块中的变量,那么意味着什么?
8. 如果通过import . XXX这种方式导入的代码包中的变量与当前代码包中的变量重名了,那么 Go 语言是会把它们当做“可重名变量”看待还是会报错呢?
9.类型转换规则中有哪些值得注意的地方?
10. 你能具体说说别名类型在代码重构过程中可以起到的哪些作用吗?
11. 如果有多个切片指向了同一个底层数组,那么你认为应该注意些什么?
12. 怎样沿用“扩容”的思想对切片进行“缩容”?
13. container/ring包中的循环链表的适用场景都有哪些?
14. container/heap包中的堆的适用场景又有哪些呢?
15. 字典类型的值是并发安全的吗?如果不是,那么在我们只在字典上添加或删除键 - 元素对的情况下,依然不安全吗?
16. 通道的长度代表着什么?它在什么时候会通道的容量相同?
17. 元素值在经过通道传递时会被复制,那么这个复制是浅表复制还是深层复制呢?
18. 如果在select语句中发现某个通道已关闭,那么应该怎样屏蔽掉它所在的分支?
19. 在select语句与for语句联用时,怎样直接退出外层的for语句?
20. complexArray1被传入函数的话,这个函数中对该参数值的修改会影响到它的原值吗?
21. 函数真正拿到的参数值其实只是它们的副本,那么函数返回给调用方的结果值也会被复制吗?
22. 我们可以在结构体类型中嵌入某个类型的指针类型吗?如果可以,有哪些注意事项?
23. 字面量struct{}代表了什么?又有什么用处?
24. 如果我们把一个值为nil的某个实现类型的变量赋给了接口变量,那么在这个接口变量上仍然可以调用该接口的方法吗?如果可以,有哪些注意事项?如果不可以,原因是什么?
25. 引用类型的值的指针值是有意义的吗?如果没有意义,为什么?如果有意义,意义在哪里?
26. 用什么手段可以对 goroutine 的启用数量加以限制?
27. runtime包中提供了哪些与模型三要素 G、P 和 M 相关的函数?
28. 在类型switch语句中,我们怎样对被判断类型的那个值做相应的类型转换?
29. 在if语句中,初始化子句声明的变量的作用域是什么?
30. 一个函数怎样才能把 panic 转化为error类型值,并将其作为函数的结果值返回给调用方?
31. 我们可以在defer函数中恢复 panic,那么可以在其中引发 panic 吗?
32. -benchmem标记和-benchtime标记的作用分别是什么?
33. 怎样在测试的时候开启测试覆盖度分析?如果开启,会有什么副作用吗?
34. 你知道互斥锁和读写锁的指针类型都实现了哪一个接口吗?
35. 怎样获取读写锁中的读锁?
36. *sync.Cond类型的值可以被传递吗?那sync.Cond类型的值呢?
37. sync.Cond类型中的公开字段L是做什么用的?我们可以在使用条件变量的过程中改变这个字段的值吗?
38. 如果要对原子值和互斥锁进行二选一,你认为最重要的三个决策条件应该是什么?
40. 在使用WaitGroup值实现一对多的 goroutine 协作流程时,怎样才能让分发子任务的 goroutine 获得各个子任务的具体执行结果?
41. Context值在传达撤销信号的时候是广度优先的还是深度优先的?其优势和劣势都是什么?
42. 怎样保证一个临时对象池中总有比较充足的临时对象?
43. 关于保证并发安全字典中的键和值的类型正确性,你还能想到其他的方案吗?
44. 判断一个 Unicode 字符是否为单字节字符通常有几种方式?
45. strings.Builder和strings.Reader都分别实现了哪些接口?这样做有什么好处吗?
46. 对比strings.Builder和bytes.Buffer的String方法,并判断哪一个更高效?原因是什么?
47. io包中的同步内存管道的运作机制是什么?
48. bufio.Scanner类型的主要功用是什么?它有哪些特点?
49. 怎样通过os包中的 API 创建和操纵一个系统进程?
50. 怎样在net.Conn类型的值上正确地设定针对读操作和写操作的超时时间?
51.怎样优雅地停止基于 HTTP 协议的网络服务程序?
52.runtime/trace代码包的功用是什么?
最后更新于