第一步在終端中使用go mod
export GO111MODULE=auto mkdir -p /xxx/script/Batchdeployment/api mkdir -p /xxx/script/Batchdeployment/package # gopath 不要和項目目錄有父子關係 echo $GOPATH /xxx/script/Batchdeployment/package cd /xxx/script/Batchdeployment/api go mod init api # script目錄是vscode 工做空間的目錄之一 # Batchdeployment 是項目目錄
最終項目結構以下
GO111MODULE 有三個值:off, on和auto(默認值)git
GO111MODULE=off,go命令行將不會支持module功能,尋找依賴包的方式將會沿用舊版本那種經過vendor目錄或者GOPATH模式來查找。github
GO111MODULE=on,go命令行會使用modules,而一點也不會去GOPATH目錄下查找。golang
GO111MODULE=auto,默認值,go命令行將會根據當前目錄來決定是否啓用module功能。這種狀況下能夠分爲兩種情形:json
- 當前目錄在GOPATH/src以外且該目錄包含go.mod文件
- 當前文件在包含go.mod文件的目錄下面
- main.go 之中的代碼以下
package main import ( "fmt" add "api/add" "github.com/labstack/echo" ) func main() { res := add.AddData() e := echo.New() fmt.Println(e) fmt.Println(res) }
- sum.go中的代碼以下
package add // addData 計算兩數只和 func AddData() int { return 3 + 4 }
在api目錄下面執行 go run main.go, go mod 會自動安裝依賴到 $GOPATH 的 pkg目錄下面api
第二步在VS Code 中使用 go mod
在vscode 的script 目錄下面新建 .vscode 目錄,裏面包含setting.json 和 launch.json,內容以下bash
setting.json { "code-runner.executorMap": { "go": "go run", "go.gopath": "/xxx/script/Batchdeployment/package", "go.toolsGopath": "/xxx/script/Batchdeployment/package" }, "code-runner.cwd": "/xxx/script/Batchdeployment/api", "go.toolsGopath": "/xxx/script/Batchdeployment/package", "go.inferGopath": false, "go.gopath": "/xxx/script/Batchdeployment/package" }
launch.json { "code-runner.executorMap": { "go": "go run", "go.gopath": "/xxx/script/Batchdeployment/package", "go.toolsGopath": "/xxx/script/Batchdeployment/package" }, "code-runner.cwd": "/xxx/script/Batchdeployment/api", "go.toolsGopath": "/xxx/script/Batchdeployment/package", "go.inferGopath": false, "go.gopath": "/xxx/script/Batchdeployment/package" }
code-runner.cwd : 是code-runner插件的配置,設置當前的項目目錄 只和能夠直接右鍵運行項目工具
go.toolsGopath: GOPATH for installing the Go tools using go.toolsGopath,簡單說就是安裝調試工具的目錄,若是沒有或者不存在默認安裝 GOPATH,不過會形成 GOPATH 的目錄雜亂spa
go.inferGopath: 若是會true,它會在當面目錄向上級目錄搜索src,並將src的上級目錄設置爲 GOPATH,反之亦然。此設置在處理具備不一樣gopath的不一樣Go項目時很是有用。插件