假如你对golang感兴趣, 却尚未开始入门, 这篇文章就是为你准备的.
为什么要学习golang?
游说开发者尝试golang的文章很多. 比如golang主要设计者的演讲, 某个德国人的吐槽, 国内golang布道者所著书籍的前言. 我不想重复一遍大牛们的观点, 只想说一说自己朴素的感受.
在学习golang之前, 我是java的爱好者, 犹如iteye的大多数用户一样. 是的, 我喜欢java, 开源, 跨平台, 强大的IDE支持, 最重要的是--工作机会很多.
但是同时我也讨厌java. 臃肿又不可或缺的IDE, 总是让我生起逃离的冲动. 语言缺乏表达力让我觉得自己是一个啰嗦的大婶. 繁琐的配置让我看到xml文件就想吐.
后来接触到golang, 才发现我对编程语言的大多数畅想都在golang身上实现了:
1. 不需要IDE支持, 只需要简单的步骤就可以配置出完美的编辑环境.
2. 兼具动态语言的开发效率和静态语言的运行效率. 有人说golang是c和python的合体, 这是非常贴切的形容.
3. 远离xml.
4. 和*nix系统天然的亲和力.
5. 享受与语言一同成长, 进步, 成熟的乐趣.
现在我白天在公司编写java代码, 而业余学习时间则全部给了golang.
安装与环境配置
点击下载golang安装包, 如果链接无法访问(好奇葩的墙), 请尝试将:
173.194.71.141 golang.org
加入hosts文件.
需要配置的环境变量有(以linux为例):
- export GOROOT=$HOME/go # go安装目录
- export PATH=$PATH:$GOROOT/bin # 将安装目录的bin文件夹加入PATH变量
- export GOPATH=~/Dropbox/source/go # GOPATH下存放个人源码
在命令行下输入go version验证是否一切顺利.
编辑器
强烈建议使用Sublime Text 2 + GoSublime + gocode + Margo构建golang编辑环境.
其中GoSublime是Sublime Text 2的一款插件, 而gocode和MarGo则为GoSublime提供代码自动补全等功能.
关于Sublime Text 2的介绍请参考这里.
推荐理由:
支持所有平台.
Sublime Text 2界面清爽, 反应极快, 用起来非常舒心. 完全不会给人如IDE般臃肿的感觉.
安装步骤:
1. 下载安装Sublime Text 2.
2. 安装package control, 用来管理ST2的插件. 打开Sublime Text 2, 按下ctrl+~, 将以下命令输入到控制台中:
- import urllib2,os;
- pf='Package Control.sublime-package';
- ipp=sublime.installed_packages_path();
- os.makedirs(ipp) if not os.path.exists(ipp) else None;
- open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read())
3. 重启ST2, 如果在Preferece-Package Settings中看到Package Control说明安装成功.
4. 通过Package Control安装GoSublime插件. 按下ctrl+shift+p, 输入install后回车. 等待响应后输入gosublime, 选择进行安装.
5. 在bash/dos命令行中输入:
go get -u github.com/nsf/gocode
go get -u github.com/DisposaBoy/MarGo
go install github.com/nsf/gocode
go install github.com/DisposaBoy/MarGo
安装完gocode和MarGo后, 切换到$GOPATH/bin目录, 运行./MarGo.
至此, 编辑环境配置完成, 点击查看最后的界面.
文档
既可以直接访问golang.org/doc, 也可以在命令行中输入:
godoc -http=:8080
后访问本地镜像:
localhost:8080
入门书籍
最开始时, 建议学习官方网站上的a-tour-of-golang.
接下来, learning-go是一本不错的开源书籍, 其中文版由xingxing翻译和维护, 翻译质量非常不错.
也可以考虑最近出版的<<go语言编程>>, 该书作者是国内使用golang编写大型程序的先驱.
对web感兴趣的同学可以关注network program with go, Go Web 编程等.
社区
建议加入golang-china邮件列表, 这个社区非常活跃, 每天的讨论邮件基本上都在50封以上. 当然英文好的同学可以选择golang-nuts.
有疑问加站长微信联系(非本文作者)