下載安裝 官網https://golang.google.cn/dl/下載,安裝 環境變數配置 參考https://www.jianshu.com/p/5c1873eaf3ca Bash 編輯~/.bash_profile文件(vim ~/.bash_profile,進入vim的正常模式,在正常模式 ...
mac上go的下載安裝教程
官網https://golang.google.cn/dl/下載,安裝
環境變數配置
參考https://www.jianshu.com/p/5c1873eaf3ca
- Bash
編輯~/.bash_profile文件(vim ~/.bash_profile,進入vim的正常模式,在正常模式中按下i, I, a, A等,進入插入模式),添加以下代碼
export GOROOT=/usr/local/Cellar/go/1.10.3/libexec
//GOROOT是golang的安裝路徑,不需要配置,安裝golang之後就已經有了
export GOPATH=/Users/chenxingyi/work/go
//GOPATH不是安裝目錄,並且不能和Go的安裝目錄一樣
//可以配置多個GOPATH,多個GOPATH之間用 : 隔開
//例如:export //GOPATH=/Users/chenxingyi/work/goUsers/chenxingyi/work1/go
//配置結束可以在通過以下幾種方式查詢GOPATH
//1.在命令行輸入 echo $GOPATH
//2.cd $GOPATH 進入GOPATH目錄,pwd顯示當前所在目錄
//3.在配置文件中查看
export GOBIN=
export PATH=$PATH:${GOPATH//://bin:}/bin
//bin 編譯後生成的可執行文件,為了方便執行可執行文件
//可以把此目錄加入到 $PATH 變數中
//如果有多個gopath,那麼使用${GOPATH//://bin:}/bin添加所有的bin目錄)
保存(在正常模式中,按下:(冒號)鍵,會進入命令模式,輸入wq保存文件),然後執行
source ~/.bash_profile
- Zsh
編輯~/.zshrc文件,添加以下代碼
export GOROOT=/usr/local/Cellar/go/1.10.3/libexec
export GOPATH=/Users/chenxingyi/work/go
export GOBIN=
export PATH=$PATH:${GOPATH//://bin:}/bin
保存,然後執行
source ~/.zshrc
go編譯和安裝一個可運行的應用
GOPATH目錄下約定有三個子目錄:src(存放源代碼)、pkg(存放編譯後生成的文件)、bin(編譯後生成的可執行文件)
在go中,目錄名(dirctory)一般和包名(package)保持一致,package是main表示可執行應用;package是其他表示應用包
多級目錄情況下包的引用:$GOPATH/src/github.com/astaxie/beedb 引用的路徑:”github.com/astaxie/beedb”,即相對路徑
go編譯和安裝一個可運行的應用的流程如下(下麵講的操作是命令行的操作,有助於理解流程):
src下編寫應用包mymath(如果在命令行下操作cd $GOPATH/src 進入編寫源碼的文件夾,mkdir mymath)
安裝應用(兩種方法):
進入對應的應用包目錄(命令行下cd mymath),然後執行go install
在任意的目錄執行如下代碼go install mymath
安裝完之後,我們可以進入目錄:
cd $GOPATH/pkg/${GOOS}_${GOARCH} //pkg存儲編譯後生成的文件 //可以先cd $GOPATH/pkg //然後ls 就可以看到${GOOS}_${GOARCH}具體是什麼,我的是darwin_amd64 //可以看到mymath.a,這個.a文件是應用包
調用這個應用包
新建 一個package是main應用包mathapp,import調用mymath,這個就是相對於$GOPATH/src的路徑,如果是多級目錄,import裡面要引入多級目錄(xxx/mymath),這時候可以直接go run 文件名.go 運行應用
編譯程式
進入應用目錄(main目錄下),執行go build(將程式編譯成二進位文件),在該目錄下會生成一個mathapp的可執行文件(可以執行ls查看到該可執行文件)
/mathapp 輸出結果(運行二進位文件)
安裝該應用,進入該目錄執行
go install
,那麼在"$GOPATH/bin/"下增加了一個可執行文件mathapp。設置環境變數的時候將GOPATH/bin加到我們的PATH裡面了,這樣可以在命令行輸入如下命令就可以執行可執行文件mathapp
go程式的整體結構
bin/
mathapp
pkg/
平臺名/ 如:darwin_amd64、linux_amd64
mymath.a
github.com/
astaxie/
beedb.a
src/
mathapp
main.go
mymath/
sqrt.go
go獲取遠程包
go有一個獲取遠程數據包的工具go get,本質上可以理解為第一步是通過源碼工具clone代碼到src下麵,然後執行 go install
go get -u 例:go get github.com/astaxie/beedb
go build命令
這個命令主要用於編譯代碼。在包的編譯過程中,若有必要,會同時編譯與之相關聯的包。
- 如果是普通包,就像我們在1.2節中編寫的mymath包那樣,當你執行go build之後,它不會產生任何文件。如果你需要在$GOPATH/pkg下生成相應的應用包,那就得執行go install。
- 如果是main包,當你執行go build之後,它就會在當前目錄下生成一個可執行文件,可直接在當前目錄下執行文件。如果你需要在$GOPATH/bin下生成相應的文件,需要執行go install,或者使用go build -o 路徑/a.exe。
- go build命令預設會編譯當前目錄下的所有go文件。如果某個項目文件夾下有多個文件,只想編譯某個文件,就可在go build之後加上文件名,例如go build a.go;
- 你也可以指定編譯輸出的文件名,預設情況是你的package名(非main包),或者是第一個源文件的文件名(main包)。(註:實際上,package名在Go語言規範中指代碼中“package”後使用的名稱,此名稱可以與文件夾名不同。預設生成的可執行文件名是文件夾名。)
go install命令
這個命令在內部實際上分成了兩步操作:第一步是生成結果文件(可執行文件或者.a包),第二步會把編譯好的結果移到
$GOPATH/pkg(普通應用包)或者$GOPATH/bin(可執行應用)。
參考書籍:https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/preface.md