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>
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