コメントで指摘頂いた通り、ExperimentalWorkspaceModuleはdeprecatedになったため、VSCode の Multi-root Workspaces 拡張機能かgo.workを利用することを推奨します。
https://qiita.com/chanhama/items/a21ca7d5cd43d6f3f90d#comment-55530e230c93991ef5c0
以下のようなディレクトリ構成でgoprojectディレクトリから開くとvscodeがサブディレクトリのgo.modを認識してくれず、can not import
エラーが発生し困っていました。
goproject
|- test1
| |- mani.go
| |- go.mod
| |- go.sum
|- test2
|- mani.go
|- go.mod
|- go.sum
調べたところLanguage Serverのgoplsのデフォルト設定だとルートディレクトリにgo.modファイルが無いとダメなようで、experimentalWorkspaceModuleの有効化で上記が解決しました。
環境
- macOS Catalina v10.15.7
- vscode v1.51.1
- go version go1.15 darwin/amd64
有効化
拡張機能
Language Server
Code > Preferences > Settings から go.useLanguageServer
を検索して有効化します。
GO111MODULE
vscodeのsettings.jsonを開き、以下を設定します。
{
"go.toolsEnvVars": {"GO111MODULE": "on"},
}
gopls
cmd+shift+Pでコマンドパレットを開き、Go: Install/Update Tools
を検索した後で gopls を選択してインストールします。
実行後、goplsのバージョンがv0.5.0以上であることを確認してください。
$ gopls version
golang.org/x/tools/gopls v0.5.4
golang.org/x/tools/gopls@v0.5.4 h1:PkQWDfzw8CxoseHDQniF2GhzmndN8KnQL6gcG2gnF3Y=
なお、コマンド実行時にxcron errorが発生した場合はxcode-selectをインストールしてください。
# エラー内容
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
undefined
# インストール
xcode-select --install
experimentalWorkspaceModule
vscodeのsettings.jsonを開き、以下を設定します。
{
"gopls": { "experimentalWorkspaceModule": true}
}
以上です。importエラーが解決しないようであれば、vscodeを再起動してください。
参考
https://github.com/golang/go/issues/37838
https://github.com/golang/go/issues/32394#issuecomment-728194166