? ? 最近項目中要用到Go語言,所以簡單總結一下安裝和配置,Go這個語言本身就限定了很多規范,比如項目設置,編程風格等,開發中就不需要再因為各種規范問題糾結了,直接用官方規定的能避免很多坑,下面直接切正題,go一般參考兩個網站,官網和中文網,網址如下:
? ? 官網:https://golang.org
? ? 中文網:https://studygolang.com/
? ? 中文文檔:https://go-zh.org/doc/
? ? 另外其實中文網的更新目前也是比較快的
? ? 1. 安裝
? ? 第一步首先下載安裝包,下載地址是:https://golang.org/dl/,或者中文網地址:https://studygolang.com/dl,比較了一下兩個go最新版本都是一樣的,目前是1.10.3,根據自己的計算機系統下載對應的版本,我這里是linux 64位,所以下載go1.10.3.linux-amd64.tar.gz這個包,下載之后可以解壓安裝:
tar -xvzf go1.10.3.linux-amd64.tar.gz
? ? 解壓之后直接當前目錄下會有一個go目錄,直接執行?mv go /usr/local?,這樣就將go安裝到的/usr/local/go下,現在只需要最后一步配置環境變量就可以了:
export PATH=$PATH:/usr/local/go/bin
? ? 可以加到/etc/profile或者~/.bash_profile然后source即可,現在執行?go version?查看版本號如下:
? ??
? ? 現在go就徹底安裝成功了,另外注意官方假定go安裝在/usr/local/go下,如果想安裝到其他目錄也是可以的,比如/abc/go,但是一定要配置GOROOT環境變量,如下:
export GOROOT=/abc/go
export PATH=$PATH:$GOROOT/bin
? ? 這樣go也可以安裝成功,如果是默認的目錄,則不需要設置GOROOT
? ? 2. hello world
? ? 第一步先寫一個最簡單的hello world程序,在任意目錄下新建hello.go,內容如下:
package mainimport "fmt"func main() {fmt.Printf("hello world\n") }
? ? ?然后保存之后執行?go run hello.go?就可以直接執行了,或者先執行編譯?go build hello.go?然后生成hello可執行文件,就和c/c++編譯一樣,無需安裝go環境即可執行:
? ??
? ? 3. 項目結構
? ? 上面只是go最簡單的示例代碼,但是在實際開發中會包含大量的項目封裝和第三方模塊,就需要設置項目結構進行管理,當然這個go已經規定好了,下面和文檔上寫的一樣一步一步建立一個簡單的項目,
? ? 首先建立工作目錄:?mkdir /root/go_work?,然后配置GOPATH環境變量,這也是開發go唯一需要配置的環境變量,如下:
export GOPATH=/root/go_work
export PATH=$PATH:$GOPATH/bin
? ? 然后進入/root/go_work,項目目錄下面一般需要3個目錄:bin, pkg, src,看意思懂了一大半,待會會詳細說到.
? ? 現在項目下面是空的,手動建立源碼目錄?mkdir src?,然后在下面繼續建立用戶庫目錄:
mkdir -p github.com/user mkdir github.com/user/hello
? ? 大部分第三方庫都是通過github下載的,所以第三方源碼目錄一般是github,然后將剛才寫的hello.go移動到github.com/user/hello中,現在可以執行安裝命令:?go install github.com/user/hello?注意是在任何目錄都可以執行這個命令,因為go會自動去GOPATH下的源碼目錄中尋找,會把對應的目錄下所有的源代碼都進行編譯,執行完成沒有任何輸出表示成功,然后回到go_work下會看到生成了bin目錄,這里面的就是編譯好的可執行文件.
? ? 然后嘗試編寫一個第三方模塊,實現字符串反轉,執行?mkdir github.com/user/string_util?然后新建文件reverse.go,代碼如下:
package string_utilfunc Reverse(s string) string {r := []rune(s)for i, j := 0, len(r) - 1; i < len(r)/2; i, j = i + 1, j - 1 {r[i], r[j] = r[j], r[i]}return string(r) }
? ? 然后保存,執行安裝?go install github.com/user/string_util?,其實在執行前可以先執行?go build github.com/user/string_util?沒有報錯說明成功,但是不會生成任何文件,然后再執行install,現在看到go_work目錄下會多出pkg目錄,這個目錄就是第三方的庫,也就是不含有main函數的代碼都會編譯到這里面;然后編寫主調函數調用這個封裝的函數,在源碼目錄下新建call目錄,然后編寫util_call.go,代碼如下:
package main import ("fmt""github.com/user/string_util" )func main() {fmt.Printf(string_util.Reverse("\n!oG, olleH")) }
? ? 然后保存執行安裝?go install call?或者在代碼所在目錄直接執行?go install?均可,這時候在bin目錄下就會生成call可執行文件,執行如下:
? ??
? ? 現在我們對go的項目結構就基本上了解清楚了,然后我們總體看一下項目結構:
? ???
? ? 這和網上教程寫的是基本一樣的
? ??總結:
? ? 1. go的開發環境僅依賴GOPATH環境變量和go安裝目錄下的系統包.
? ? 2. go的所有源碼應該在src下按照目錄結構存放,按照標準的安裝方式編譯項目.
? ? 3. 所有包含main函數的源代碼,頭部package都應該為main,其余的模塊比如github.com/user/stringutil下面的源碼頭部應該為package stringutil,即取目錄結構的最后一層.
? ? 上面就是go的基本環境安裝和開發配置,繼續入門或進階可以參考以下鏈接:
? ? 1. Go語言之旅,在線學習:https://tour.go-zh.org/
? ? 2. 語言規范:https://go-zh.org/ref/spec
? ? 3. 實效Go編程:https://go-zh.org/doc/effective_go.html
? ? 最后就是總的文檔,多多閱讀.