我的目录中有两个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时,出现以下错误
由于此错误,我无法运行代码。将每个文件分成多个文件夹时,该代码运行良好。我试图在保存之前从文件中删除主要声明,但是自动完成/自动格式化功能会自动填充包,主要和导入“fmt” 命令。我的怀疑是:
好的)
最佳答案
在同一个包中两次声明main函数没有意义。您提到代码可以很好地将mains.go
和vars.go
文件放置在单独的文件夹中。这是预料之中的,这是需要做的-将文件放在不同的文件夹中。
但是,如果需要同时运行这两个功能,请使用如下定义的简单goroutine更改设置:
// main.go
package main
import (
"fmt"
"sync"
)
var wg sync.WaitGroup
func main() {
fmt.Println("This is the mains file")
wg.Add(1)
go vars()
// do other stuff...
wg.Wait()
}
// vars.go
package main
import "fmt"
func vars() {
fmt.Println("This is the vars file")
// do other stuff...
wg.Done()
}
这样,您就可以在同一程序包中同时运行两个功能。由于函数不能具有相同的函数名:
main()
,因此您需要像我所做的那样将其中之一更改为其他名称。但是请注意,您可以简单地调用
vars()
函数而无需同时调用。