可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I currently have a single file in my main package called main.go. How do I split the contents of main.go into multiple files without creating a separate package because the code isn't reusable.
I want a directory structure like this:
$ ls foo main.go bar.go
bar.go
package main import "fmt" func Bar() { fmt.Println("Bar") }
Then in main.go
package main func main() { Bar() }
回答1:
The code above actually works. The problem was I needed to run
go run *.go
instead of
go run main.go
回答2:
As mentioned in "How to compile Go program consisting of multiple files?", go run expects a list of files, since it "compiles and runs the main package comprising the named Go source files".
So you certainly can split your main package in several files with go run.
That differs from go build/go install which expect package names (and not go filenames).
A simple go build would produce an executable named after the parent folder.
Note that, as illustrated by this thread, a go run *.go wouldn't work in a Windows CMD session, since the shell doesn't do wildcard expansion.
回答3:
For Windows install Cygwin and use it instead of command prompt. "go run *.go" will work then.