基礎(chǔ)環(huán)境變量
GOROOT
Go 源代碼的安裝目錄,Mac
和 Windows
安裝時會自動配置好,Linux
一般在 /usr/local/go
目錄。
# 查看 $GOROOT 目錄
$ echo $GOROOT
/usr/local/bin
# 設(shè)置 $GOROOT 目錄
$ export GOROOT=/usr/local/bin
# 增加 go 相關(guān)命令到 PATH
$ export PATH=$PATH:/usr/local/go/bin
GOPATH
簡單來說,就是存放 Go 第三方庫的源代碼以及構(gòu)建后可執(zhí)行程序的目錄,建議設(shè)置為獨(dú)立的目錄并且不要存放其他文件。
# 查看 $GOPATH 目錄
$ echo $GOPATH
/home/codes/go
# 設(shè)置 $GOPATH 目錄
$ export GOPATH=/home/codes/go
GOPROXY
安裝包的下載代理地址,直接使用 七牛云
提供的代理地址 ,速度非??欤?/p>
# 查看 $GOPROXY 代理地址
$ echo $GOPROXY
https://goproxy.cn
# 設(shè)置 $GOPROXY 目錄
$ export GOPROXY=https://goproxy.cn
GO111MODULE
是否開啟了 gomod
, 必須開啟才可以使用 Go Module
。
# 查看 $GO111MODULE 模塊開啟情況
$ echo $GO111MODULE
on
# 設(shè)置 $GOPROXY 目錄
$ export GO111MODULE="on"
建議將剛才的配置寫入 ~/.bashrc
或者 ~/.zshrc
文件,永久有效。 到這里,我們第一步設(shè)置基礎(chǔ)環(huán)境變量的工作就完成了,可以驗證一下設(shè)置是否成功:
$ go env | grep -i -E "root|path|goproxy|module"
GO111MODULE="on"
GOPATH="/home/codes/go"
GOPROXY="https://goproxy.cn"
GOROOT="/usr/local/go"
通過輸出結(jié)果可以看到,剛才的配置已經(jīng)全部完成。
Go 命令方法
env
命令除了查看環(huán)境變量外,同樣可以設(shè)置環(huán)境變量。
# 通過 go env 命令設(shè)置代理環(huán)境變量
$ go env -w GOPROXY=https://goproxy.cn,direct
Modules
Go 從 1.12 版本開始,默認(rèn)支持 Go Modules
, 從此徹底告別配置 GOPATH
以及包下載及依賴導(dǎo)致的各種奇葩問題。
初始化一個包
這里假設(shè)項目名稱為 HelloWorld
。
- ? 新建項目的目錄,比如
/home/codes/projects/HelloWorld
- ? 切換到
/home/codes/projects/HelloWorld
目錄 - ? 執(zhí)行命令
go mod init helloworld
# 輸出如下
go: creating new go.mod: module helloworld
go: to add module requirements and sums:
go mod tidy
- ? 這時可以看到目錄下多了一個
go.mod
文件,其中內(nèi)容如下
$ cat go.mod
module helloworld
go 1.19 # 版本號可能和你的不一樣
安裝依賴
Go 的包名定義非常簡單,就是一個普通的 URL (以域名打頭),可以是主流的代碼倉庫地址,也可以是自己搭建的代碼倉庫。下面的例子統(tǒng)一以 Github 演示。
# 語法規(guī)則: 其中版本號可以是 git 分支或 tag
go get 包名@版本號
# 例: go get github.com/spf13/cast@v1.4.1
安裝 spf13/cast 包
spf13/cast
是一個數(shù)據(jù)類型轉(zhuǎn)換包,可以非常簡單地對常見數(shù)據(jù)類型互相轉(zhuǎn)換,并且不會引發(fā) panic
。
- ? 執(zhí)行命令:
$ go get github.com/spf13/cast@v1.4.1
# 輸出如下
go: added github.com/spf13/cast v1.4.1
- ? 打開
go.mod
文件,內(nèi)容如下:
module helloworld
go 1.19
require github.com/spf13/cast v1.4.1 // indirect
- ? 在
go.mod
旁邊多了一個go.sum
文件,內(nèi)容如下:
github.com/davecgh/go-spew
...
...
github.com/stretchr/testify
- ? 使用安裝好的包
將如下代碼寫入文件 main.go
package main
import (
"fmt"
"github.com/spf13/cast"
)
func main() {
s := cast.ToString(1024)
fmt.Printf("s is a %T, val = %s\\n", s, s)
}
$ go run main.go
// 輸出如下
/**
s is a string, val = 1024
*/
查看依賴
# 列表輸出
$ go list -m -m all
# # json 輸出
$ go list -m -json all
# 輸出當(dāng)前項目的 Module 名稱以及依賴報名
helloworld
...
...
github.com/spf13/cast v1.4.1
...
...
升級依賴
# 語法規(guī)則:
# 升級次級或補(bǔ)丁版本號
go get -u 包名@版本號
# 僅升級補(bǔ)丁版本號
go get -u=patch 包名@版本號
這里,我們將 spf13/cast
包從 v1.4.1
升級到 1.5.0
,執(zhí)行如下命令:
go get -u github.com/spf13/cast@v1.5.0
# 輸出如下
go: upgraded github.com/spf13/cast v1.4.1 => v1.5.0
查看 go.mod
文件,內(nèi)容已經(jīng)更新為:
module helloworld
go 1.19
require github.com/spf13/cast v1.5.0 // indirect
刪除依賴
當(dāng)前項目中有些包已經(jīng)不再使用了,但是 go.mod
文件中依然定義了依賴關(guān)系,可以使用下面的命令自動整理優(yōu)化 go.mod
文件。
$ go mod tidy
常用命令
go mod init # 初始化
go mod tidy # 更新 (移除) 依賴文件
go mod download # 下載依賴文件
go mod vendor # 將依賴全部歸檔到 vendor 目錄
go mod edit # 修改依賴文件
go mod graph # 打印依賴關(guān)系 圖
go mod verify # 校驗依賴
到這里,Go Modules
的基礎(chǔ)配置及使用已經(jīng)完成,我們可以快速導(dǎo)入成熟的第三方庫來加速開發(fā)。
編輯器
工欲善其事,必先利其器。 現(xiàn)代化項目開發(fā),一個高效的 IDE 必不可少。
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
590瀏覽量
27317 -
URL
+關(guān)注
關(guān)注
0文章
139瀏覽量
15298 -
go語言
+關(guān)注
關(guān)注
1文章
158瀏覽量
9016
發(fā)布評論請先 登錄
相關(guān)推薦
評論