go語言快速入門:簡介(1)
阿新 • • 發佈:2018-12-22
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,以及安裝後各目錄的作用。