給 Python 開發者的 Go 語言入門指南

peachchen 8年前發布 | 30K 次閱讀 Python Go語言 Google Go/Golang開發

0. 關于

之前 學習過 Go 一段時間 ,用 Vim 做為 IDE ,也嘗試過幾次 用 Go 做服務器后端 ,后來因為沒有再寫網站的需求就放下了一段時間。現在回憶一下用 Go 的體驗,與 Python 相比可能有下面幾點優勢:

  1. 高性能,高性能,高性能;
  2. 低內存,低內存,低內存;
  3. 異步;

缺點有:

  1. 庫太少(相比于 Python);
  2. 內置數據結構及操作太簡陋;
  3. 第三方庫依賴、安裝、管理麻煩(墻也占了一部分原因);

最近來看 Go 的發展還是相當不錯的,至少在服務器與后端方面的優勢(高能低耗二進制包)還是非常吸引人的。新電腦上還沒有配置過 Go 語言環境,剛好這次重新安裝、配置一次,并從基礎語法上與 Python 進行對比,方便有興趣的 Python 開發者可以快速嘗試一下 Go 語言,順便作為筆記。

本文主要包括:

  1. Go 安裝與配置
  2. Atom as IDE
  3. Go VS Python

1. Go 安裝與配置

所有安裝、配置的步驟都在 官網(需KX上網)國內文檔鏡像國內安裝包鏡像 )有清楚的說明,Mac OS X 已經有了 pkg 版本,可以直接雙擊安裝。Go 語言有幾個非常重要的環境變量需要搞清楚并設定好:

GOROOT :

Go 的安裝目錄。這個目錄是 Go 尋找內置庫的地方,如果是 Mac OS X 安裝包默認位置為 /usr/local/go ,如果是從源碼手動安裝,若不是安裝到 /usr/local/go 則將其設定為安裝目錄(若是默認位置無需設定):

add to ~/.bashrc or ~/.zshrc

export GOROOT=/path/to/where/go/installed
</pre>

GOPATH :

你的工作目錄。這個目錄用于存放從網上下載的第三方庫以及你自己創建的項目。與 Python 不同的是,Go 的目標并不在于創建可以隨處執行的腳本,而是以項目為單位。可以任意選擇一個目錄作為你的 Go 工作目錄:

add to ~/.bashrc or ~/.zshrc

export GOPATH=/Users/rainy/Projects/go
</pre>

除了這兩個必備的環境變量之外,還可以設定一下系統信息:

export GOARCH=amd64  
export GOOS=darwin  
export GOBIN=/usr/local/go/bin  

最后一個 GOBIN 是指執行 go get some-package 的時候將生成的二進制命令保存到的目錄,如果不設定默認為 $GOPATH/bin ,最好將這一目錄添加到系統路徑中(若設定為 /usr/local/go/bin 還需要注意權限問題):

add to ~/.bashrc or ~/.zshrc

export PATH=$PATH:$GOBIN
</pre>

現在就算是安裝配置完成了,執行:

go version

go version go1.6.2 darwin/amd64

</pre>

再試試安裝一個命令行工具:

go get -u github.com/astaxie/bat  

bat 工具將會被安裝到 $GOBIN 下,這時我們回到工作目錄下,會發現目錄結構變為:

cd $GOPATH && tree -L 1

.

├── bin

├── pkg

└── src

</pre>

其中 src 下面保存的是各種第三方庫以及自己項目的源文件, bin 則是 go get 或 go install 生成的二進制執行文件, pkg 是平臺相關的包。接下來將 Atom 配置成 Go 專用 IDE!

2. Atom as Go IDE

之前配置過 Vim ,但現在大部分情況都是用 Atom,而且 Atom 的插件管理更方便,所以就用 Atom 作為 IDE!

首先要安裝的插件是 go-plus ,但結果發現它有一堆的依賴插件需要安裝,并且這些插件依賴一些 Go 的工具,不過現在 Atom 已經可以自動安裝依賴插件了,不需要一個一個手動安裝:

這些插件有可能會需要一些 Go 工具的支持,例如 golint 、 goimport 、 gocode 等,這里就體現出我上面提到的缺點之一了,如果是托管在 github 上的庫還算好點,但如果 golang.org 或者 code.google.com 就需要KX上網了,之前也是被這些第三方庫搞得焦頭爛額,體驗非常差。

經過漫長的等待, go-plus 的依賴都安裝完了,然后安裝 Go 工具:

go get -u github.com/nsf/gocode
go get -u github.com/golang/lint

對于 golang.org/x/ 下面的包建議去 GitHub 鏡像倉庫手動 Clone 項目,然后本地執行 go install

cd $GOPATH
mkdir -p golang.org/x
cd golang.org/x
git clone https://github.com/golang/tools.git
go install golang.org/x/tools/cmd/goimports
</pre>

先不著急用 Atom 創建 Go 文件,先來看看此時的工作目錄:

cd $GOPATH
tree -L 2

.

├── bin

├── pkg

│ └── darwin_amd64

└── src

├── github.com

├── golang.org

├── gopkg.in

└── honnef.co

</pre>

Go 的第三方庫存放目錄是以托管網站開頭的( import 的時候也是這樣),自己創建的項目也應該遵循這個規范!(注意到我這里的 bin 目錄下沒有任何可執行文件,因為我把它們移動到系統路徑下了)。

接下來創建一個新項目:

cd $GOPATH  
mkdir src/github.com/rainyear/learn  
atom src/github.com/rainyear/learn  

如果你還覺得 Python 的縮進是強迫癥的話,那么真正的強迫癥來了!Go 提供了 gofmt 和 goimports 工具,幫助你強行把代碼整理干凈,包括縮進、花括號、 import ,只要在 Atom 中保存一下,代碼就會被重新整理一遍,這才是強迫癥患者的福音!不過 Google 也將這一福利推廣至 Python,推出了 Python 格式化工具: yapf

上圖中是通過 Atom 的 Builder 插件執行 go run main.go 運行的,如果整個項目完成之后,可以通過 go install 打包生成二進制文件(甚至可以生成跨平臺的二進制包,直接部署到線上!):

cd $GOPATH/src/github.com/rainyear/learn
go install

二進制包將會打包至 $GOBIN 或者 $GOPATH/bin

cd $GOPATH
ls bin

learn

./bin/learn

Hello world!

</pre>

3. Go VS Python

最后來比較一下 Go 與 Python 的一些基本語法,其中 Go 語言的例子來自 A Tour of Go源文件

 

來自: http://blog.rainy.im/2016/05/30/golang-101-for-pythoners/

 

 本文由用戶 peachchen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!