
1. Rob,你创建了Google Go这门语言。什么是Google Go?能简明扼要的介绍一下Google Go吗?
2. Go的主要特点是什么?有什么重要功能?
3. 在我们继续话题之前,能否解释一下为什么Go编译器能达到那么快的编译速度呢?有什么法宝?
4. 让我们开始聊聊Go里的类型系统吧。Go里面有结构(struct)、有类型(type),那么Go里的类型是什么?
5. 那么这些方法只是在包内部可见喽?
6. 你的意思是,我可以给int增加方法,但是必须先使用typedef吗?
7. 你们借鉴了Ruby里开放类的思想,这很有意思。Ruby的开放类实际上是可以修改类并增加新的方法,这是有破坏性的,但是你们的方法本质上是安全的,因为创建了新的东西。
8. 你还提到了typedef,是叫typedef吧?
9. Typedef在C里是一种预处理指令吗?【编辑注/免责申明:C语言里的typedef与预处理无关】
10. 我们从底层说起吧,在Go里最小的类型是什么?
11. 但是,int这样的类型是值类型对吧.
12. 它们类似C++的引用吗?
13. 它是结构内部一个复合对象。
14. 你提到过接口比较有趣,那下面咱们就谈谈这一部分。
15. 某种程度上有点类似结构化类型系统(structural typing)
16. 你提到过类,但Go没有类,对吧。
17. 但是没有类怎么去写代码?
18. 如果我有一些行为要实现,而且想放在多个structs里,怎么去共享这些行为?
19. 如果有多重继承命名冲突的问题该怎么办?
20. 因为系统中没有根对象或根类,如果我想得到一个拥有不同类型的结构的列表,应该怎么办?
21. Go里有叫做Goroutines的东西,它们和coroutines有什么区别?不一样么?
22. 你提到你们使用了m:n线程模型,即m个coroutines映射到n个线程上?
23. Goroutines有用于通信的通道吗?
24. 你提到你们有缓存的同步通道和异步通道。
25. 每个Goroutine就像是一个小的线程,可以这么给读者解释吧。
26. 它们是轻量级的。但是每个线程同样都预分配栈空间,因而它们非常耗费资,Goroutines是怎么处理的呢?
27. 我们再来谈谈自动化方面的东西,最初你们是将Go语言作为系统级语言来推广的,一个有趣的选择是使用了垃圾回收器,但是它速度并不快或者说有垃圾回收间歇问题,如果用它写一个操作系统的话,这是非常烦人的。你们是怎么看这一问题的?
28. 有没有方法能够避免直面垃圾回收器,比如用一些大容量缓存,我们可以把数据扔进去。
29. 最后一个问题:Go是系统级语言还是应用级语言?
有疑问加站长微信联系(非本文作者))
