1、問題描述
這里啟用的是go module模式,在將一個目錄進行初始化后,該目錄下生成一個go.mod文件。當我試圖在該目錄下自定義包時(即創建一個子文件夾並新建.go文件),vscode給了以下錯誤提示:
gopls requires a module at the root of your workspace.
You can work with multiple modules by opening each one as a workspace folder.
Improvements to this workflow will be coming soon, and you can learn more here:
https://github.com/golang/tools/blob/master/gopls/doc/workspace.md.go list
2、問題分析
進入提示中的地址:https://github.com/golang/tools/blob/master/gopls/doc/workspace.md
了解到,go module模式分為兩種情況:
1.一個模塊
一個模塊就是指,該文件及其子目錄下,只有一個go.mod文件(這里需要注意的是,如果將包新建或移動到該目錄下,新的子目錄下雖然沒有go.mod文件,但go依然視之為一個module,此時就構成了嵌套)。
2.多個模塊
自 2021 年 1 月起,如果使用多個模塊或嵌套模塊,則需要為每個模塊創建一個“工作區文件夾”。這意味着每個模塊都有自己的范圍,並且功能不會跨模塊工作。
3.開啟多模塊
多模塊並非默認開啟的,因為目前依舊不夠完善,需要手動開啟。可以通過配置 experimentalWorkspaceModule 設置進行嘗試
3、問題解決
編輯:將下面設置添加到文件中
"experimentalWorkspaceModule ":true,
4、總結
由於版本的不斷更新,隨着更加的規范化,很多舊版本不視為問題的問題都暴露了出來,這固然是一種進步,但學習的過程中也不免有了更多的挑戰。
參考:https://www.cnblogs.com/dliy/p/14832722.html
https://github.com/golang/tools/blob/master/gopls/doc/workspace.md