[dev][go] 学习Golang都需要掌握什么
Posted hugetong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[dev][go] 学习Golang都需要掌握什么相关的知识,希望对你有一定的参考价值。
一 什么?
首先要了解Golang是什么。
Golang是一门计算机编程语言;可以编译成机器码的像python一样支持各种特性的高级语言。
由Google发明,发明人之一是K,就是C语言的那个K&R的K。
二 安装环境
安装环境,无外乎就是安装编译器。
有两套(我知道的),一个官方的Go,一个Gcc-Go
这里不讨论GccGo。
2.1 安装
安装官方Go,有两个办法,一个是去网站下载,然后自己解压。另一个是用包管理工具yum,pacman等。
下载的话,就去这里download:https://golang.org/dl/, 然后tar解压就可以了。
之后把你解压的目录的bin,加到PATH环境变量里。然后,和使用包管理工具安装的便没有任何区别。
运行一下go,如果你能看见帮助信息,说明安装正确。
2.2 配置
配置之前,你需要理解什么是包管理,就是java(为什么是java?)里边那个包管理,不是上小结的包管理。
随便找了一个,最好读一下:http://www.runoob.com/java/java-package.html
因为接下来要建立目录结构,而目录结构需要与包结构保持一至,所以最好要懂得包的概念。不过对于不求甚解的你,依葫芦画瓢也是可以的,不懂也罢。
配置的话,
只需要配置你的workspace的路径给GOPATH环境变量就可以了,不配的话,默认在这里:~/go/
这个目录是干啥的?就是GO世界里的根目录,GO的世界都在这个根下,它不认识外边的世界。
在这个目录下,至少需要两个子目录,bin, src。src里是未来的所以代码,src也是所有go package的根。
编译,并install之后的二进制,都在bin下面。当你执行了go install 之后。
举例一个目录实例,注意观察src下的目录树,等同于package的数。
bin/ hello # command executable outyet # command executable src/ github.com/golang/example/ .git/ # Git repository metadata hello/ hello.go # command source outyet/ main.go # command source main_test.go # test source stringutil/ reverse.go # package source reverse_test.go # test source golang.org/x/image/ .git/ # Git repository metadata bmp/ reader.go # package source writer.go # package source ... (many more repositories and packages omitted) ...
三 使用
代码写好,并正确的放置到了目录树里边之后,就可以编译,运行了。
go run/build/install 包名。三个命令分别对应着解释执行,编译,安装三个操作。
go的程序,即可以解释执行,可以编译成二进制执行。
如,根据上面的目录结构:
go run github.com/golang/example/
go build hello
go install hello
执行过上边的命令后,在bin目录下会生成可执行程序hello。我们可以直接执行它。
生成执行程序的名字,与包名一致。
你一定要再读一下,这个,会把我上边写的东西,更生动准确的讲一下:
https://golang.org/doc/code.html
四 编码
当完成了以上三步的操作之后,我们便已经具备了go语言的运行环境了。接下来便可以开始学习编码了。
4.1 新手入门
第一个我建议阅读的不是任何书,也不是任何手册,而是这样一份剪短而清晰的指南。理论上如果你足够聪明绝顶(我还不行,我植被茂盛)的话,只看这一个也足够上手了。
https://tour.go-zh.org/welcome/1
4.2 语法规约
你一定是一个严谨的吧?不是可以跳过这里。
作为一个严谨的人,我们一定要了解每一个Go语言的每一个细节。然后再反观设计哲学,才敢写下第一行宝贵的go代码。
语法规约:https://golang.org/ref/spec
4.3 风俗习惯
入乡即要随俗,写代码这种事,有各种各样的穷讲究。命名怎么写,缩进怎么缩。入了中餐馆用筷子,入了西餐馆用刀叉,吃烤全羊用手抓。
进了Go餐馆,我们怎么吃:https://golang.org/doc/effective_go.html
4.4 库
201x年,高级语言(相对于C)最大的魅力不在于灵活的语法,不在于好看的IDE。而在于丰富的库。
这里,有一个所有库的列表,以及他们的文档:
五 实践
你需要找一份写的好的代码,读一读抄一抄。
然后,再找一个不太复杂的需求,写一写。
六 另外
6.1
另外,还有一本书,我还没看,大家都在看。我马上要去看一下(此刻的我跳过了第五小节)。。。。
https://book.douban.com/subject/27044219/
6.2
IDE是什么鬼?没听说过,我只有emacs,给你个插件要不要?
https://www.emacswiki.org/emacs/GoLangMode
6.3
DEBUG? 还不会呢。。。以后更新。。。。
6.4
内存怎么管理的?协程怎么实现的?
--!!! ... 上苍保佑吃饱了饭的人民~~~
七 完
离开了第五小节,其他的都是纸上谈兵。
以上是关于[dev][go] 学习Golang都需要掌握什么的主要内容,如果未能解决你的问题,请参考以下文章
今晚八点 golang 分享《如何在60分钟掌握 go 协程&管道 & socket 通信》