[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/
五 實踐
你需要找一份寫的好的代碼,讀一讀抄一抄。
然後,再找一個不太復雜的需求,寫一寫。
六 另外
另外,還有一本書,我還沒看,大家都在看。我馬上要去看一下(此刻的我跳過了第五小節)。。。。
https://book.douban.com/subject/27044219/
七 完
離開了第五小節,其他的都是紙上談兵。
[dev][go] 學習Golang都需要掌握什麽