总体质量还行,但是很多细节上做的不好
2015-10-06
先说缺点:
1. 这本书更像是关于go语言主要特性的文章合集。内容上既不全面,也不深入。定位既不是介绍语法基础,也不是介绍Go语言内部实现机制或者某一个特性的深入介绍。
2. 对于Go语法介绍既不全面,也不系统,不便于读者掌握Go语言语法。这方面不如《An Introduction to Programming in Go》这本书。
3. 例子代码不够简洁,大的例子代码适合作为练习,介绍语言特性还是比较适合用简短的小例子。而且里面有不少错误。比如第83页,给出的Play函数的定义如下:
func Play(source, mtype string) {
var p Player
switch mtype {
case "MP3":
p = &MP3Player{}
case "WAV":
p = &WAVPlayer{}
default:
 fmt.Println("Unsupported music type", mtype)
return
}
p.Play(source)
}
但是第85页,调用的地方代码
func handlePlayCommand(tokens []string) { if len(tokens) != 2 {
fmt.Println("USAGE: play <name>")
return
}
e := lib.Find(tokens[1]) if e == nil {
fmt.Println("The music", tokens[1], "does not exist.")
return
}
mp.Play(e.Source, e.Type, ctrl, signal) //调用地方传入了4个参数
}
第86页给出了程序的执行结果,真不知道程序怎么运行成功的。
4. 对于某些深入的主题,未介绍一些关键主题,比如第7章工程管理,未对大型项目如何引用第三方package进行介绍。还有对一些主题应该给出进一步阅读链接,比如第8章开发工具更像是从某个博客文章拷贝下来的。
这本书的优点:
1. 内容中包含作者实际一些开发经验。
2. 一些比较大的例子代码读懂后,对学习Go语言工程化开发比较有帮助。
3. 第9章,对Go语言内部实现机制的进阶介绍,显示了作者的功底和深入思考。