1. 程式人生 > >go語言快速入門:簡介(1)

go語言快速入門:簡介(1)

go語言成為2016年TIOBE年度語言,距離上次TIOBE年度語言至今已經過去7年,在過去的7年裡,go語言也得到了廣泛的應用,尤其是在開源領域,從docker到kubernetes都使用了go作為開發語言。在這系列文章中,我們將一起來由淺入深學習一下go語言,至少在研究這些流行的開源軟體更加得心應手一些。

背景

go語言是由google在2009年11月10日釋出的一門全新的語言,支援面向物件和反射機制,具有接近於c的執行速度,遠遠快於c和c++的編譯速度,近似指令碼語言的靈活。當然和總多流行語言一樣,有著眾多堅定的支持者和不屑一顧的反對者,但是從它誕生到現在,發展和擴散的速度一直很快也是不爭的事實。

特點

go語言具有很多的特點,將一部分主要特點列舉如下:

項番 詳細內容
No.1 靜態編譯型語言
No.2 語法簡潔,趨近於指令碼化
No.3 跨平臺支援
No.4 自動垃圾回收機制
No.5 具有併發變成模型和機制(goroutine等)
No.6 支援多種程式設計風格,支援面向物件
No.7 無繼承層次的輕量級方式
No.8 全面的工具支援
No.9 統一的程式碼風格以及自己的程式碼格式化工具
No.10 編譯和執行速度飛快
No.11 總多的標準庫
No.12

安裝

安裝非常簡單,只需要下載/解壓/設定環境變數即可,本系列文章中使用CentOS,整體相關相差無幾,僅僅在於安裝時的package/以及環境變數的設定方式的OS的差別而已。

這裡寫圖片描述

安裝命令:
cd /usr/local
wget https://storage.googleapis.com/golang/go1.7.5.linux-amd64.tar.gz
gunzip -dc go1.7.5.linux-amd64.tar.gz |tar xvf -

環境變數

go只需要設定GOROOT和PATH即可,在CentOS如下設定即可對全使用者有效。

[[email protected] ~]# tail -n2 /etc/profile
export GOROOT=/usr/local/go
export PATH=$PATH:${GOROOT}/bin
[[email protected] ~]#

結果確認

[root@liumiaocn ~]# echo $GOROOT
/usr/local/go
[root@liumiaocn ~]# which go
/usr/local/go/bin/go
[root@liumiaocn ~]#

除了GOROOT和PATH的環境變數,GO還有其他一些環境變數,入門階段可以不作深入確認,在後面的學習中將會慢慢展開,如上安裝之後,相關的環境變數資訊如下所示:

專案 設定內容
GOARCH “amd64”
GOBIN “”
GOEXE “”
GOHOSTARCH “amd64”
GOHOSTOS “linux”
GOOS “linux”
GOPATH “”
GORACE “”
GOROOT “/usr/local/go”
GOTOOLDIR “/usr/local/go/pkg/tool/linux_amd64”
CC “gcc”
GOGCCFLAGS “-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build703746769=/tmp/go-build -gno-record-gcc-switches”
CXX “g++”
CGO_ENABLED “1”

版本確認

使用如下命令,可以確認所安裝的版本為go1.7.5,安裝則正常完成了。

[root@liumiaocn ~]# go version
go version go1.7.5 linux/amd64
[root@liumiaocn ~]#

安裝詳細

解壓後,go1.7.5被gunzip到/usr/local/go下,詳細的資訊如下所示:

[[email protected] go]# pwd
/usr/local/go
[[email protected] go]# ls -l
total 132
drwxr-xr-x.  2 root root  4096 Jan 26 12:43 api
-rw-r--r--.  1 root root 29041 Jan 26 12:43 AUTHORS
drwxr-xr-x.  2 root root    39 Jan 26 12:48 bin
drwxr-xr-x.  4 root root    35 Jan 26 12:48 blog
-rw-r--r--.  1 root root  1168 Jan 26 12:43 CONTRIBUTING.md
-rw-r--r--.  1 root root 40192 Jan 26 12:43 CONTRIBUTORS
drwxr-xr-x.  8 root root  4096 Jan 26 12:43 doc
-rw-r--r--.  1 root root  5686 Jan 26 12:43 favicon.ico
drwxr-xr-x.  3 root root    17 Jan 26 12:43 lib
-rw-r--r--.  1 root root  1479 Jan 26 12:43 LICENSE
drwxr-xr-x. 14 root root  4096 Jan 26 12:48 misc
-rw-r--r--.  1 root root  1303 Jan 26 12:43 PATENTS
drwxr-xr-x.  7 root root    82 Jan 26 12:48 pkg
-rw-r--r--.  1 root root  1638 Jan 26 12:43 README.md
-rw-r--r--.  1 root root    26 Jan 26 12:43 robots.txt
drwxr-xr-x. 45 root root  4096 Jan 26 12:43 src
drwxr-xr-x. 18 root root  8192 Jan 26 12:48 test
-rw-r--r--.  1 root root     7 Jan 26 12:43 VERSION
[[email protected] go]#

對經常可能用到的資料夾,進行簡單說明如下:

專案 詳細說明
api go各個版本的api,儲存在go1.1.txt到go1.7.txt7個檔案中。except.txt儲存即將廢棄的api,而next.txt儲存著下個版本將會出現的內容
bin 相關的可執行檔案,預設會有go/gofmt/godoc
doc 離線官方文件和說明
misc 各IDE的外掛等
pkg go標準庫的歸檔檔案
src 原始碼
test 測試程式碼

C語言的經驗者

總結

通過本文可以簡單瞭解go的特點以及如何在centos上安裝go1.7.5,以及安裝後各目錄的作用。