怎么学习golang?

我是毕业以后才学的php,不是计算机专业。因此,我想学门静态语言。目前,自己学习golang也有一段时间了。但是感觉golang总是如不了门! 
和php.比。感觉go较灵活。它的标准库的很多函数 参数、返回值什么的 不再像php一样单纯的就是那几个基本数据类型,而是接口,甚至结构什么的,而我总是被这些东西整得晕头转向!


看文档不知道怎么下手!求知乎的大神指点迷津!怎么学习golang,或静态语言?
----------------------一年以后--------------------


ps:感谢各位大大热心的回答

已邀请:

bigwhite - Go程序猿,个人博客:http://tonybai.com

赞同来自: wangfei geidoo sheepbao astaxie 白眉 swrd更多 »

记得早期接触go时,看的是Golang之父之一的Rob Pike的Go course 3部曲(3个ppt),如果你没有,可以到这里下载(注意:由于rob pike的这个ppt在go 1之前发布的,ppt上的有些语法与go 1有少许差别,注意识别)。


要想深入了解Go,写出idiomatic的golang代码,官方doc:effective go, go faq,以及go language specification也是不可或缺的。


之后再系统的学习后的资料,建议看k&a写的go圣经-the go programming language、
《Go in action》 以及国内雨痕大师的《go语言学习笔记》(尤其是代码分析的部分),学习笔记一书适合稍微有些go经验,且抱着极大热情挖掘go runtime背后的原理的人去学习。


剩下的就是不断的去用go coding, coding, coding了,无捷径。

astaxie - 创造、获取、分享、传播和应用Go

赞同来自: geidoo sheepbao 白眉 layneYoo swrd captain811 huangda gofreshman更多 »

我觉得学习一门语言最重要的就是做到三点,第一看基础知识,第二学习抄代码,第三学习写代码


第一点,很多人都觉得上来就动手写,但是你基础的东西都没掌握,怎么写呢?欲速则不达,所以基础的东西还是必须要先掌握好.这里推荐你几个基础的入门材料:
http://tour.golang.org/#1
邢星翻译的mikespook/Learning-Go-zh-cn · GitHub
Go by Example
我觉得你把这几个基础掌握之后就可以开始抄袭代码了,如果你之前有PHP的开发经验,那么也许我写的这本书对你了解golang有帮助, https://github.com/astaxie/build-web-application-with-golang


第二点,我们很多时候开始写代码都是没什么思路,也无从下手,但是我们可以模仿别人写代码,上海俗话里面常说"吃大户,用大户,消灭大户",我们就是"看代码,抄代码,最后自己写代码".这里给你几个入门级别的代码看看学习一下:
Web.go - Quickstart 很简单,就是学习他的路由怎么实现的,如何编写自己的路由
icub3d/home 路 GitHub 这是一个Go+ AngularJS的实现,看看如何做API应用最后我列一下你可以自己参考去实现的一些功能,我当初培训我们战虎班的同学就是用这些来一起学习的.
日志分析
IP库分析
管理后台查看分析日志第三点,自己写代码,这个时候就是已经对golang有了一定的了解了,那么我们就可以开始做自己的项目了,做项目最想就是快速开发,那么我就推荐你
https://github.com/astaxie/beego 使用beego框架可以很快速的开发你的Web或者API应用
Homepage - Docker: the Linux container engine 使用docker来做虚拟化
skynetservices/skynet · GitHub 学习分布式
coreos/etcd · GitHub 分布式应用
这个阶段就是找各种东西用golang来写,多写就会理解越来越深入.


交流群:148647580
 

itfanr - @inspur

赞同来自:

《雨痕笔记》(《Go语言学习笔记》)


《Go并发编程实战》


the way to go


慢慢补充。。。

Thomas - 路人丁

赞同来自:

多看,多写,多练

Xargin - 滴滴打杂工

赞同来自:

可以来看我们翻译的go语言圣经(网络版

tangyumeng

赞同来自:

基础语法看官方文档就够了。 web 相关的知识推荐 https://book.douban.com/subject/26340005/ 。 然后就可以用框架什么的。自己建几个表,增、删、改、查。

myml - 97后,大二

赞同来自:

有其他语言基础就多看看go标准库http://godoc.ml/http://godoc.org ),了解用法。
标准库很规范和风格

Cloudinsight - 系统监控可视化工具,一体化解决方案,涵盖 Windows、Linux 操作系统监控,以及支持 30 多种基础组件监控。安装 Cloudinsight 探针只需 40 秒;所有基础组件监控支持可插拔。用 Golang 写的探针即将开源,敬请关注!

赞同来自:

可以看看我们工程师写的文章:Python 程序员的 Golang 学习指南(I): Go 之初体验
持续更新中,欢迎关注

要回复问题请先登录注册