在vscode 之中使用 GO MOD

第一步在終端中使用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(默認值)

GO111MODULE=off,go命令行將不會支持module功能,尋找依賴包的方式將會沿用舊版本那種通過vendor目錄或者GOPATH模式來查找。

GO111MODULE=on,go命令行會使用modules,而一點也不會去GOPATH目錄下查找。

GO111MODULE=auto,默認值,go命令行將會根據當前目錄來決定是否啓用module功能。這種情況下可以分爲兩種情形:

  • 當前目錄在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目錄下面

第二步在VS Code 中使用 go mod

在vscode 的script 目錄下面新建 .vscode 目錄,裏面包含setting.json 和 launch.json,內容如下

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 的目錄雜亂

go.inferGopath: 如果會true,它會在當面目錄向上級目錄搜索src,並將src的上級目錄設置爲 GOPATH,反之亦然。此設置在處理具有不同gopath的不同Go項目時非常有用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章