[dev][go] 学习Golang都需要掌握什么

Posted hugetong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[dev][go] 学习Golang都需要掌握什么相关的知识,希望对你有一定的参考价值。

 

一 什么?

首先要了解Golang是什么。

Golang是一门计算机编程语言;可以编译成机器码的像python一样支持各种特性的高级语言。

由Google发明,发明人之一是K,就是C语言的那个K&R的K。

网站:https://golang.org/

 

二 安装环境

安装环境,无外乎就是安装编译器。

有两套(我知道的),一个官方的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。而在于丰富的库。

这里,有一个所有库的列表,以及他们的文档:

https://golang.org/pkg/

 

五 实践

你需要找一份写的好的代码,读一读抄一抄。

然后,再找一个不太复杂的需求,写一写。

 

六 另外

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 通信》

DevOps 需要学习什么基础知识,需要掌握哪些技能?

[golang] 当用到一知半解的Go丢掉了大半年之后如何又能快速捡起

怎么学习golang

Golang学习笔记

Golang学习笔记