不能 运行 多个 go 文件
Cannot run multiple go files
我在一个目录下有两个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")
}
虽然 运行使用终端命令单独地打开文件
go run mains.go
go run vars.go
我正在获取输出。当我使用 VScode 时,出现以下错误
main redeclared in this block
previous declaration at ./mains.go:5:6
由于这个错误,我无法 运行 代码。当每个文件被分成文件夹时,代码 运行 没问题。我试图在保存之前从文件中删除主声明,但是 autocomplete/autoformat 功能填充了 package main & 自动导入"fmt"命令。我的疑问是:
是不是编辑的问题? (作为终端命令 运行
很好)
还有其他推荐的IDE吗?
My specs
Ubuntu : 16.04
Visual Studio Code : 1.23.1
go version : 1.9.2
您是否在同一目录下的两个不同文件中声明了两个主要函数?如果是,则不能,因为 go 程序只能有一个入口点。
Golang 还建议每个目录有一个包。您可以在同一个包中包含多个文件。
例如:
- Root directory of program
-- main.go - package main (define main func here)
-- vars.go - package main (You can not redefine main func or package in this file, since everything under directory falls in to same package in golang)
- lib directory
-- lib.go - package lib
-- something.go - package lib
希望对您有所帮助!
在同一个包中两次重新声明主函数没有意义。您提到代码可以很好地将 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()
函数,而无需同时调用。
我在一个目录下有两个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")
}
虽然 运行使用终端命令单独地打开文件
go run mains.go
go run vars.go
我正在获取输出。当我使用 VScode 时,出现以下错误
main redeclared in this block
previous declaration at ./mains.go:5:6
由于这个错误,我无法 运行 代码。当每个文件被分成文件夹时,代码 运行 没问题。我试图在保存之前从文件中删除主声明,但是 autocomplete/autoformat 功能填充了 package main & 自动导入"fmt"命令。我的疑问是:
是不是编辑的问题? (作为终端命令 运行 很好)
还有其他推荐的IDE吗?
My specs
Ubuntu : 16.04
Visual Studio Code : 1.23.1
go version : 1.9.2
您是否在同一目录下的两个不同文件中声明了两个主要函数?如果是,则不能,因为 go 程序只能有一个入口点。
Golang 还建议每个目录有一个包。您可以在同一个包中包含多个文件。
例如:
- Root directory of program -- main.go - package main (define main func here) -- vars.go - package main (You can not redefine main func or package in this file, since everything under directory falls in to same package in golang) - lib directory -- lib.go - package lib -- something.go - package lib
希望对您有所帮助!
在同一个包中两次重新声明主函数没有意义。您提到代码可以很好地将 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()
函数,而无需同时调用。