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

How do I import definitions from another file in a Go program?

我有以下文件:

gopackage/main.go:

package main

func main () {
  foo();
}

gopackage/otherfile.go:

package main

import "fmt"

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

显然,main.go 中对 foo 的引用未解析为 otherfile.gofoo 的定义:

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

为什么不呢?有人告诉我,同一目录中的所有文件都包含一个包,这是一个范围。

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.

列出所有 gofiles,

go run main.go otherfile.go

或者,在 Linux 和其他类 Unix 系统上,*.go 是目录中所有 .go 文件的通配符,

go run *.go