我在一个目录下有两个go文件。
Go
├── mains.go
└── vars.go
字符串
mains.go和vars.go的代码如下:
mains.go
--------
package main
import "fmt"
func main() {
fmt.Println("This is the mains file")
}
vars.go
--------
package main
import "fmt"
func main() {
fmt.Println("This is the vars file")
}
型
使用terminal命令单独运行文件时,
去把电源打开,快去
去跑瓦尔斯,去
我正在获取输出。当我使用VScode时,我得到以下错误
- main在此块中重新声明
上一次申报时间:./mains.go:5:6*
由于这个错误,我无法运行代码。当每个文件被分隔到文件夹时,代码运行正常。我试图在保存之前从文件中删除main声明,但自动完成/自动格式化功能会自动填充***package main***&***import“fmt”***命令。我的疑虑是:
- 这是编辑器的问题吗?(因为终端命令运行正常)
- 还有其他推荐的IDE吗?
我的配置
Ubuntu:16.04
Visual Studio代码:1.23.1
Go版本:1.9.2
3条答案
按热度按时间qyswt5oh1#
在同一个包中重新声明main函数两次是没有意义的。你提到代码可以很好地将
mains.go
和vars.go
文件放在不同的文件夹中。这是预期的,这就是需要做的-placing the files in different folders
。但是,如果你需要运行这两个函数,可以使用下面定义的简单goroutine来更改设置:
字符串
这将允许你在同一个包中同时运行这两个函数。由于函数不能有相同的函数名:
main()
,你需要像我做的那样将其中一个函数改为其他函数。但是请注意,您可以简单地调用
vars()
函数,而无需并发执行。wlwcrazw2#
你是否在同一目录下的两个不同文件中声明了两个主函数?如果是,你不能,因为你只能有一个go程序的入口点。
Golang还建议每个目录有一个包。你可以在同一个包中有多个文件。
举例来说:
字符串
希望能帮上忙!
lp0sw83n3#
在同一个文件夹中有多个带有func main()的go文件对于简单的代码片段(而不是生产代码!)是很方便的。
您不能在该文件夹上使用go build。Go将给予错误:
main在此块中重新声明
但您可以使用命令运行单个文件,
go run file.go
要在VSCode中运行单个文件,您必须向VSCode添加Launch file配置
1.按下运行三角形按钮旁边的齿轮打开'launch.json'
1.在屏幕右下方出现按钮添加配置,按下该按钮。
1.从列表中选择“{} Go:Launch file”选项。
添加的新配置为:
字符串
1.保存发射,开始
1.要运行文件,请在“运行”三角形按钮旁边的下拉列表中选择“启动文件”。