使用vscode+gopls開發Go專案

被gopls給坑了...

最近更新vscode的GO插件,引用新的tools,導致專案一直顯示引用錯誤。像是https://github.com/golang/go/issues/33107

搞了很久終於發現是gopls這支tool需要一些特別的設定才能正常在vscode使用。

1.go版本

我測試使用的是 go version go1.12.7 windows/amd64

2. vscode 設定

快捷鍵 Ctrl+Shift+P叫出命令視窗輸入Settings.json

將設定檔修改如下,設定的詳細請參考gopls的github說明

{
    "git.ignoreMissingGitWarning": true,
    "window.zoomLevel": 0,
    "editor.minimap.enabled": false,
    "terminal.external.windowsExec": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
    "explorer.confirmDelete": false,
    "files.autoSave": "off",
    "terminal.explorerKind": "external",
    
    "go.goroot": "C:\\Go",
    "go.gopath": "D:\\gopath",
    "go.useLanguageServer": true,
    "[go]": {
        "editor.snippetSuggestions": "none",
        "editor.formatOnSave": true,
        "editor.codeActionsOnSave": {
            "source.organizeImports": true,
        }
    },
    "gopls": {
        "usePlaceholders": true, // add parameter placeholders when completing a function
    },
    "files.eol": "\n", // formatting only supports LF line endings

    "[json]": {
        "editor.defaultFormatter": "HookyQR.beautify"
    }
}

3.mod init

gopls會參考 go.mod的資訊

go mod init "專案名稱"

4.如果引用的module是在同層的資料夾內引用時需要帶入此專案名稱

原本 import "./module"

修改 import "project/module"