如何从Go程序中的另一个文件导入定义? [重复]

This question already has an answer here:

I have the following files:

gopackage/main.go:

package main

func main () {
  foo();
}

gopackage/otherfile.go:

package main

import "fmt"

func foo() {
  fmt.Print("foo
")
}

Apparently, the reference to foo from main.go does not resolve to the definition of foo in otherfile.go:

> go run main.go
# command-line-arguments
./main.go:4: undefined: foo

Why not? I have been told that all files in the same directory comprise a single package, which is a single scope.

</div>

Compile and run Go program

Usage:

go run [build flags] [-exec xprog] gofiles... [arguments...]

Run compiles and runs the main package comprising the named Go source files. A Go source file is defined to be a file ending in a literal ".go" suffix.

List all the gofiles,

go run main.go otherfile.go

Or, on Linux and other Unix-like systems, *.go is the wildcard for all .go files in the directory,

go run *.go