带GO的Visual Studio代码-多个主声明(启动设置)
我不熟悉VS代码和Golang。带GO的Visual Studio代码-多个主声明(启动设置),go,visual-studio-code,vscode-settings,Go,Visual Studio Code,Vscode Settings,我不熟悉VS代码和Golang。 我有一个现有的项目,包含两种不同的服务——我们将其中一种称为A,另一种称为B。 A和B都位于同一目录下 每当我尝试运行A或B时,都会出现以下错误: # directory/directory/directory/A&B_Directory ./A.go:12:6: main redeclared in this block previous declaration at ./B.go:18:6 我尝试使用launch.json文件,添加了以下部
我有一个现有的项目,包含两种不同的服务——我们将其中一种称为A,另一种称为B。
A和B都位于同一目录下 每当我尝试运行A或B时,都会出现以下错误:
# directory/directory/directory/A&B_Directory
./A.go:12:6: main redeclared in this block
previous declaration at ./B.go:18:6
我尝试使用launch.json
文件,添加了以下部分:
{
"name": "Launch Program",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "FullDirectory/A.go"
}
还尝试在程序属性中将设置为${file}
和许多其他变体失败
我想找个方向,我有点迷路了。
谢谢。免责声明:这不是推荐的方法,我同意其他人的意见,您应该将服务A和B分离到不同的目录中
回答您的问题:要启动特定文件,请使用以下配置模拟运行当前文件:
{
"version": "0.2.0",
"configurations": [
{
"name": "Run current file",
"type": "go",
"request": "launch",
"mode": "exec",
"program": "full-path-to-go.exe",
"args": ["run", "${file}"],
"showLog": true
}
]
}
模式
exec
用于启动属性程序
中给定的预构建二进制文件(必须指定go
二进制文件的完整路径)。然后作为参数,只需将run
和文件名(${file}
)添加到属性args
一个程序中不能有多个main
。目录中的所有文件都是同一个包的一部分。如果你想让A和B成为独立的“服务”,它们需要位于不同的目录中。一个目录,一个包。再也不会了。那很简单。没有理由在这里争论。@DotnetProg我有一种模糊的感觉,那就是你可能有一种习惯,使用go run file1[file2[…]]
在vscode之外进行编译和运行循环。“问题”在于,这是一个“降级”案例,通常不用于“真正的”Go项目。在“常规方式”处理项目时,您通常会安装[package_spec],它使用整个当前目录或遍历由package_spec
指定的目录树,在其中构建并安装所有非最新的内容。这不适用于同一文件集中的两个文件,它们都包含包“main”中的main()
。VSCode执行go build
,然后运行可执行文件,这是IDE应该做的。Gogland可能正在进行go run
,这是一种可怕的做法,应该避免——一个原因是它完全掩盖了这些问题,在一个包中包含多个main
声明的无效包。@DotnetProg JFTR您可能会发现这些简短的声明很有意思,因为它们基本上是作为go
工具可以使用go代码做什么的快速介绍。非常感谢,您尝试使此配置正常工作,但没有成功。同时,我会选择Gogland,等我对go有了更多的经验后,再仔细研究你的答案。@DotnetProg,错误是什么?我试过了,效果不错。您必须打开并查看要运行的文件。