第一步在终端中使用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项目时很是有用。插件