1. 6.4 总结
我最近听go被描述成一门无聊的语言。无聊时因为很容易学,容易写,更重要的是容易读。也许,我实际帮了个倒忙。我已经用了3章谈论类型并介绍了如何声明变量。
如果你有静态类型语言的编程背景,最好情况下,我们看到的大多数可能只是复习一下而已。go语言让指针用起来更明显且易用了,并且go将数组封装成切片,对经验丰富的java和c#程序员来说,不是什么压倒性的优势。
如果你主要是使用动态型语言,你可能觉得有点不一样。这是一个公平的学习。不仅仅是各种各样的语法声明和初始化。尽管作为一个go语言的粉丝,尽管作为Go的粉丝,我发现,对于所有的简单性的进展,也有一些不太简单。虽然如此,这里也涉及到一些基本规则(比如你可以使用:=声明变量,但是只能声明一次)和基本理解(比如使用new(x)或者&X{}只能分配内存,但是切片、映射和通道需要更多的初始化所以使用make)。
除此之外,go语言让我们以一种简单有效的方式组织代码。接口,基于返回值的错误处理方式,通过defer管理资源,并且以一种简单的方式实现组合。
最后但是也最重要的是go内置支持并发。关于go协程没有什么要说的了,除了协程简单有效(无论如何使用简单)。这是一个很好的抽象。通道更为复杂。我一直认为在使用高水平封装之前先理解最基本使用方法。我认为不通过通道学习并发编程是很有用的。但是,对我来说,我觉得通道的实现方式不像一个简单的抽象。它们几乎都是自己的基本构建块。我这样说是因为它们改变了你如何编写和思考并发编程。考虑到并发编程是多么的不易,这肯定是一件好事。