如何从 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.go
中 foo
的定义:
> go run main.go
# command-line-arguments
./main.go:4: undefined: foo
为什么不呢?有人告诉我,同一目录中的所有文件都包含一个包,这是一个范围。
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
我有以下文件:
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.go
中 foo
的定义:
> go run main.go
# command-line-arguments
./main.go:4: undefined: foo
为什么不呢?有人告诉我,同一目录中的所有文件都包含一个包,这是一个范围。
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