在VSCode中打开golang/go项目时遇到的错误

在VSCode中打开golang/go项目时遇到的错误 当我在 VSCode 中打开 golang/go 时,遇到了很多错误。 有什么需要设置的吗? 或者是否有相关的文档可以参考? 我遇到了类似 use of internal package cmd/go/internal/base not allowed 的错误。 感谢您的帮助。

image

3 回复

按照此处描述更新了路径,问题已解决。

github.com

更多关于在VSCode中打开golang/go项目时遇到的错误的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我刚下载了 Go 1.16.6 的源代码,解压后,在 VS Code 中打开了 src 文件夹。我遇到的唯一错误是 std/runtime/cgo 报告“使用了 cgo 的包包含 Go 汇编文件 asm_amd64.s”。

你使用的是其他版本吗?你是采取了哪些步骤导致出现这些错误的?

在 VSCode 中打开 golang/go 项目时遇到 use of internal package 错误是正常现象,因为您正在尝试编译 Go 语言自身的源代码。golang/go 仓库包含 Go 编译器和标准库的内部实现,这些 internal 包是故意设计为不可外部导入的。

问题原因

当 VSCode 的 Go 扩展(gopls)尝试分析项目时,它会检查所有导入语句。在 golang/go 代码库中,许多包导入 internal 包,这些包只能被同一模块内的其他包导入,而 gopls 在分析时会模拟外部编译环境。

解决方案

1. 禁用 gopls 对当前工作区的分析

在项目根目录创建 .vscode/settings.json 文件:

{
    "gopls": {
        "build.buildFlags": ["-tags=ignore"],
        "ui.diagnostic.staticcheck": false
    },
    "go.lintOnSave": "off",
    "go.vetOnSave": "off"
}

2. 使用特定的构建标签

Go 编译器源代码使用构建标签来区分构建环境。在项目根目录创建 .vscode/tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build go",
            "type": "shell",
            "command": "go",
            "args": ["build", "-tags=ignore", "./cmd/go"],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

3. 临时禁用诊断

在 VSCode 中按 Ctrl+Shift+P,输入并选择 “Go: Toggle Diagnostics”,暂时关闭错误提示。

4. 使用正确的构建命令

如果您确实需要构建 Go 编译器,使用官方构建方式:

cd src
./make.bash

或者使用 bootstrap 方式:

cd src
GO111MODULE=off ./bootstrap.bash

注意事项

  1. golang/go 仓库主要供 Go 开发团队和贡献者使用,普通用户通常不需要直接编译或修改它
  2. 如果您只是想学习 Go 源代码,建议使用 Go 官方文档或通过 go doc 命令查看标准库文档
  3. 对于日常 Go 开发,应该创建自己的项目目录,而不是在 golang/go 仓库中工作

这些设置会告诉 gopls 和 VSCode 的 Go 扩展忽略当前项目的常规分析,避免显示 internal 包导入错误。

回到顶部