本部分资料来自于知乎:http://www.zhihu.com/question/23486344
- 《Go编程基础》
Unknwon/go-fundamental-programming · GitHub
- 《Go Web基础》 Unknwon/go-web-foundation · GitHub
- 《Go名库讲解》 Unknwon/go-rock-libraries-showcases · GitHub
- 《Go Web基础》 Unknwon/go-web-foundation · GitHub
- 《Go名库讲解》 Unknwon/go-rock-libraries-showcases · GitHub
1
http://golang.org/doc/
主要看 A Tour of Go, How to write Go code, Effective Go
2 熟悉package, GoDoc
package : strconv,net/http,net/url,string,math,time
3 练习,project eular. 每学一门新语言的时候,可以来做一遍.
About - Project Euler
4 语言特点:
select,channel,defer,goroutine,静态类型(int,int64,类型转换),闭包,package的组织形式
5 reflect
http://blog.golang.org/laws-of-reflection
6 阅读开源软件的源代码,nsq,martini等.
7 使用go去做一个项目.
主要看 A Tour of Go, How to write Go code, Effective Go
2 熟悉package, GoDoc
package : strconv,net/http,net/url,string,math,time
3 练习,project eular. 每学一门新语言的时候,可以来做一遍.
About - Project Euler
4 语言特点:
select,channel,defer,goroutine,静态类型(int,int64,类型转换),闭包,package的组织形式
5 reflect
http://blog.golang.org/laws-of-reflection
6 阅读开源软件的源代码,nsq,martini等.
7 使用go去做一个项目.
作者:唐生
链接:http://www.zhihu.com/question/23486344/answer/24805683
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
入门看官网的tutorial不错,整整74页
http://tour.golang.org/#1
然后看这页里的各个链接,推荐顺序:
http://golang.org/doc/code.html
http://golang.org/doc/effective_go.html
http://golang.org/doc/faq
http://golang.org/doc/cmd
http://blog.golang.org/gos-declaration-syntax
http://blog.golang.org/go-concurrency-patterns-timing-out-and
http://talks.golang.org/2012/concurrency.slide#1
http://talks.golang.org/2013/advconc.slide#1
http://blog.golang.org/error-handling-and-go
http://blog.golang.org/gobs-of-data
http://blog.golang.org/laws-of-reflection
http://blog.golang.org/profiling-go-programs
http://blog.golang.org/c-go-cgo
包文档也要过一遍 http://golang.org/pkg/
然后看这页里的各个链接,推荐顺序:
http://golang.org/doc/code.html
http://golang.org/doc/effective_go.html
http://golang.org/doc/faq
http://golang.org/doc/cmd
http://blog.golang.org/gos-declaration-syntax
http://blog.golang.org/go-concurrency-patterns-timing-out-and
http://talks.golang.org/2012/concurrency.slide#1
http://talks.golang.org/2013/advconc.slide#1
http://blog.golang.org/error-handling-and-go
http://blog.golang.org/gobs-of-data
http://blog.golang.org/laws-of-reflection
http://blog.golang.org/profiling-go-programs
http://blog.golang.org/c-go-cgo
包文档也要过一遍 http://golang.org/pkg/
建议你先看:
http://go-tour-zh.appspot.com/#1
逐个例子的看,慢慢的改例子,然后运行;确保自己理解教程中给出的每一行代码,以及说明文字。
然后再去看: Unknwon/the-way-to-go_ZH_CN · GitHub
然后,你就可以用go做实际项目咯~
逐个例子的看,慢慢的改例子,然后运行;确保自己理解教程中给出的每一行代码,以及说明文字。
然后再去看: Unknwon/the-way-to-go_ZH_CN · GitHub
然后,你就可以用go做实际项目咯~
我觉得学习一门语言最重要的就是做到三点,第一看基础知识,第二学习抄代码,第三学习写代码
第一点,很多人都觉得上来就动手写,但是你基础的东西都没掌握,怎么写呢?欲速则不达,所以基础的东西还是必须要先掌握好.这里推荐你几个基础的入门材料:
我觉得你把这几个基础掌握之后就可以开始抄袭代码了,如果你之前有PHP的开发经验,那么也许我写的这本书对你了解golang有帮助, https://github.com/astaxie/build-web-application-with-golang
第二点,我们很多时候开始写代码都是没什么思路,也无从下手,但是我们可以模仿别人写代码,上海俗话里面常说"吃大户,用大户,消灭大户",我们就是"看代码,抄代码,最后自己写代码".这里给你几个入门级别的代码看看学习一下:
这个阶段就是找各种东西用golang来写,多写就会理解越来越深入.
第一点,很多人都觉得上来就动手写,但是你基础的东西都没掌握,怎么写呢?欲速则不达,所以基础的东西还是必须要先掌握好.这里推荐你几个基础的入门材料:
我觉得你把这几个基础掌握之后就可以开始抄袭代码了,如果你之前有PHP的开发经验,那么也许我写的这本书对你了解golang有帮助, https://github.com/astaxie/build-web-application-with-golang
第二点,我们很多时候开始写代码都是没什么思路,也无从下手,但是我们可以模仿别人写代码,上海俗话里面常说"吃大户,用大户,消灭大户",我们就是"看代码,抄代码,最后自己写代码".这里给你几个入门级别的代码看看学习一下:
- Web.go - Quickstart 很简单,就是学习他的路由怎么实现的,如何编写自己的路由
- icub3d/home 路 GitHub 这是一个Go+ AngularJS的实现,看看如何做API应用
- 日志分析
- IP库分析
- 管理后台查看分析日志
- https://github.com/astaxie/beego 使用beego框架可以很快速的开发你的Web或者API应用
- Homepage - Docker: the Linux container engine 使用docker来做虚拟化
- skynetservices/skynet · GitHub 学习分布式
- coreos/etcd · GitHub 分布式应用
这个阶段就是找各种东西用golang来写,多写就会理解越来越深入.
cs.cmu.edu/~dga/15-440/S14/index.html
这是CMU分布式系统课程,对应有四个课程项目,全部要求用go实现.项目都有完整的说明和单元测试程序.题主可以做一做
Python转到Go的,学了大概2个月, 期间写了大概2500行游戏服务器框架(
Skycrab/cham · GitHub),不包含测试代码,不包含业务逻辑代码。主要是学习
https://github.com/cloudwu/skynet
写的,主要就是实现golang的actor模型,服务之间的消息发送,消息处理,定时器实现,广播实现,log模块,websocket实现,gate模块,debug service实现,还有一些基础库,如lru算法,300行简单的orm(curd),敏感词过滤,还有一个从 @xjdrew的 https://github.com/xjdrew/lua-zset移植的go版本sorted set实现。所以我觉得你缺的是一个开始,开始写代码,研究代码,阅读代码,重构,反复。
写的,主要就是实现golang的actor模型,服务之间的消息发送,消息处理,定时器实现,广播实现,log模块,websocket实现,gate模块,debug service实现,还有一些基础库,如lru算法,300行简单的orm(curd),敏感词过滤,还有一个从 @xjdrew的 https://github.com/xjdrew/lua-zset移植的go版本sorted set实现。所以我觉得你缺的是一个开始,开始写代码,研究代码,阅读代码,重构,反复。
你是搞PHP的,建议从web开始,从
@asta谢的
astaxie/beego · GitHub开始搞起,用beego做个小应用,先不要想如何牛逼,如何优美,先以功能实现为主。从操就业,这时一股熟悉的感觉弥漫心头,自信悄然而来,嘎嘎golang小kiss而已。注意,自信很重要,自信很重要,真的很重要,重要的话要说3遍。
自信来了,代码也写了,期间欠的债也该还了。啥,欠谁债了,你别吓我,我没钱。哈哈,当然是欠golang的债了,前期你玩了人家,很爽自信也来了,人家当然要赖着你了,yes,就是到了深入交流的时候了。这个时候你需要认真看项目中用到的标准库实现原理,框架实现原理,学习代码方式,golang的原理,可以读读 Skycrab/go-internals · GitHub。这和谈恋爱一样,深入交流你才知道,她还会这个,还能这样,哈哈,get新技能。当然这个阶段是痛苦的,切记不要一股脑一直研究,不然会把你带入深渊拔不出来。这和谈恋爱一样,你天天纠结人家七大姑八大姨的,前男友,前女友的,人家能给你好脸色才怪。
自信来了,代码也写了,期间欠的债也该还了。啥,欠谁债了,你别吓我,我没钱。哈哈,当然是欠golang的债了,前期你玩了人家,很爽自信也来了,人家当然要赖着你了,yes,就是到了深入交流的时候了。这个时候你需要认真看项目中用到的标准库实现原理,框架实现原理,学习代码方式,golang的原理,可以读读 Skycrab/go-internals · GitHub。这和谈恋爱一样,深入交流你才知道,她还会这个,还能这样,哈哈,get新技能。当然这个阶段是痛苦的,切记不要一股脑一直研究,不然会把你带入深渊拔不出来。这和谈恋爱一样,你天天纠结人家七大姑八大姨的,前男友,前女友的,人家能给你好脸色才怪。
新手遇到的了50个go语言的坑:
50 Shades of Go: Traps,Gotchas,and Common Mistakes for New Golang Devs ,里面很多的坑,我也在学的过程中遇到过,避免这50个坑,可以节省编译期间的大部分时间,不说了,填坑去了
首先如果有C的基础,推荐《
Go by Example》,通篇基于代码讲解,通俗易懂,没废话。花上一个周末的时间,很快就能自己动手开始写Go代码。
之后可以看看相关创始人的博客,比如《 research!rsc: Go Data Structures: Interfaces》,加深对Go语言内部机制的理解。最好还能补一下并发的相关知识(比如自旋锁、互斥锁等等的概念),虽然不一定用得上,但知道的话日后调试代码能省不少时间。
有空的话还可以读读 The Go Programming Language Specification,我觉得这可以算是最易懂的几份Language Specification。
之后可以看看相关创始人的博客,比如《 research!rsc: Go Data Structures: Interfaces》,加深对Go语言内部机制的理解。最好还能补一下并发的相关知识(比如自旋锁、互斥锁等等的概念),虽然不一定用得上,但知道的话日后调试代码能省不少时间。
有空的话还可以读读 The Go Programming Language Specification,我觉得这可以算是最易懂的几份Language Specification。
yinwang.org/blog-cn/2014/04/18/golang/
你需要看这个《对 Go 语言的综合评价》——王垠
学习资料推荐:
qyuhen/book · GitHub
雨痕的书写的很好。
你可以从它的第一版开始看,它包括语言基础、标准库解释。
第四版的没有基本库解释。我想他的计划是:
第五版
上册:语言基础
中册:标准库
下册:源码分析
Go Programming Blueprints - 如果你不知道拿Go来做什么
The Go Programming Language - 语言基础
Go语言编程的基础,我推荐一个:Go语言第一课
原文链接:https://www.f2er.com/go/189474.html