最近开始学习GO语言,至于直接的起因是看了astaxie大大所撰写的这本书,该书放在GitHub上开源编写,使用(创作共用 署名-相同方式共享3.0许可协议)授权。
其实对GO语言的关注早在2011年时就有所耳闻,当时也从网上搜罗了一些资料了解了其中一些特性,但是苦于资料在国内很难找到,且能用的资源少之又少,无奈只好放弃,看了astaxie的书后,如今又重新燃起了学习的欲望。 那么,学习之前首先需要先了解为什么要学,GO语言之所以吸引人可以参考这篇文章文章中提到如下几个观点:
1、快速简单的编译(虽然我没有感受到,难道是工具的原因?至少没有我用eclipse编译java程序快,纯个人体会,未经证实^_^)
2、通过多返回值的错误处理;
3、简单的组合(个人觉得java显示声明类所实现的接口的方式可读性更强,另外类的定义方式我也用得比较难接受);
package mainimport ( "fmt")//定义接口,必须实现sayHi()方法type Duck interface { sayHi()}//定义WhiteDuck类type WhiteDuck struct {}func (w WhiteDuck) sayHi() { fmt.Println("hello!!")}func main() { var w WhiteDuck var d Duck = w //赋值接口 d.sayHi()}
接口直到被使用前才知道哪个类实现了它本身,一个文件中存在N个类,对于习惯了写JAVA代码的我还真是不习惯
4、简单的并发;
这条我非常赞同,我觉得这个是我认为我需要学习GO语言最重要的原因,Rob有篇文章专门解释了Go语言的并发的实现机制,以及使用方法
5、优秀的错误提示;(目前还没入门,没有太多的体会,希望以后自己能有专门的博文来介绍)
6、高阶函数、垃圾回收、哈希映射、可扩展的数组等等。(这些也还没有接触,不是太清楚)