我对 Go 的构建过程有一个简单的问题。
我有一个非常简单的应用程序,可能是最简单的,其结构如下
- myapp
- main
- main.go
- go.mod
与 main.go 存在
package main
import "fmt"
func main() {
fmt.Println("Hello !")
}
从文件夹中myapp
我运行命令go build -o bin/main main/main.go
并且一切正常。
不,我决定在要调用doStuff()
的包中创建一个新函数,但我想将它放在不同的文件中。所以应用程序的新结构是main
main()
stuff.go
- myapp
- main
- main.go
- stuff.go
- go.mod
与main.go
存在
package main
import "fmt"
func main() {
fmt.Println("Hello !")
doStuff()
}
和stuff.go
存在
package main
import "fmt"
func doStuff() {
fmt.Println("I am doing stuff")
}
如果我现在尝试运行相同的构建命令go build -o bin/main main/main.go
,我会收到错误消息main/main.go:4:2: undefined: doStuff
。
但是,如果我进入该main
文件夹并从那里运行该命令go build -o ../bin/main
一切正常。
这种行为的原因是什么?如果我想创建一个可执行文件,我应该总是go build
从文件夹中运行命令吗?main()