我正在try 调试vscode中的以下代码.我在同一个目录中有两个版本的文件,有微小的差异(调试期间的临时编辑).因此,我现在的目录中有3个文件:go.mod、bug1.go和bug2.go.

//bug1.go
package main

import (
    "fmt"
)

type Animal int64

const (
    Goat Animal = iota
    Cat
)

func (n Animal) String() string {
    switch n {
    case Goat:
        return "Goat"
    case Cat:
        return "Cat"
    }
    return "?"
}

type Group struct {
    A, B Animal
}

func main() {

    fmt.Println("Animal: ", Cat)
}

我可以从命令行运行上面的代码,如下所示(它只编译bug1.go而忽略bug2.go):

go run bug1.go

现在,我正在try 使用以下启动文件.json调试bug1.go:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch",
      "type": "go",
      "request": "launch",
      "mode": "auto",
      "program": "${workspaceFolder}",
      "env": {},
      "args": []
    }
  ]
}

因此,我在vscode中打开bug1.go,然后按Run和Debug,然后我看到从bug2.go报告的错误.看起来vscode正在try 将目录中的所有文件编译在一起,并正在检测代码重复:

Build Error: go build -o /Users/.../bug/__debug_bin -gcflags all=-N -l .
./bug2.go:9:6: Animal redeclared in this block
    ./bug1.go:9:6: other declaration of Animal
./bug2.go:12:5: Goat redeclared in this block
    ./bug1.go:12:5: other declaration of Goat

如何将vscode配置为只编译bug1.go而忽略bug2.go?

推荐答案

program设置为${file}:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch current file",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${file}"
        }
    ]
}
  • program:在debugtest模式下指向程序文件夹(或该文件夹中的任何GO文件)的路径,以及在exec模式下要调试的预构建二进制文件的路径.如果它不是绝对路径,扩展会将其解释为工作区相对路径.

    (默认:"${workspaceFolder}")

    Launch.json attributes

  • ${file}:当前打开的文件

    Variables Reference

Go相关问答推荐

将Go程序导出到WASM—构建约束排除所有Go文件

为什么(编码器).EncodeElement忽略";,innerxml";标记?

理解Golang中的IOTA和常量

什么东西逃到了堆里?

为什么 `go mod` 占用了另一个磁盘上的空间而不是我的 GOPATH?

日志(log)文件不在 golang 的日志(log)目录中

无法读取postman 中的表单数据

Golang校验器包:重命名字段错误处理

杜松子wine 和中间件

一个Go module可以和之前的非module模块发布在同一个路径下吗?

使用 Go 根据 /etc/shadow 文件中的散列密码验证密码

致命错误 - 所有 Goroutines 都睡着了!僵局

使用图像解码 JPEG 时 colored颜色 不正确.解码并写入 PDF?

在 Go 中公开公共 JWK

golang pic.ShowImage 为什么它不生成图像而是向我发送base64值

gorm 获取列名

Golang API 的 HTTPS

如何断言类型是指向golang中接口的指针

如何从应用程序调用谷歌云身份 API

在 Go 中表达函数的更好方法( struct 方法)