我遇到了go run main.go产生错误的问题:
# command-line-arguments
./main.go:9: undefined: test
但是,这些命令go build && ./goruntest可以很好地编译和运行程序。
输出是:
你好来自测试()
您好来自 sameFileTest()
你好来自 pkgtest.Test()
你好来自 pkgtest.Test1()
我的目录设置如下:
go/src/github.com/username/goruntest/
pkgtest/
pkgtest.go
pkgtest1.go
main.go
test2.go
这是代码。
main.go
package main
import (
"fmt"
"github.com/username/goruntest/pkgtest"
)
func main() {
fmt.Println(test()) // main.go:9
fmt.Println(sameFileTest())
fmt.Println(pkgtest.Test())
fmt.Println(pkgtest.Test1())
}
func sameFileTest() string {
return "Hi from sameFileTest()"
}
gotest1.go
package main
func test() string {
return "Hi from test()"
}
pkgtest/pkgtest.go
package pkgtest
func Test() string {
return "Hi from pkgtest.Test()"
}
pkgtest/pkgtest1.go
package pkgtest
func Test1() string {
return "Hi from pkgtest.Test1()"
}
我知道问题出在第二个文件中package main,我也明白没有真正的理由在main.
我的问题是:为什么go run无法处理此设置,但构建和运行可执行文件却能正常工作?
编辑
包含第二个文件 pkgtest
我也明白该命令go run main.go gotest1.go有效,但为什么我需要指定gotest1.go?
为了简洁起见,我最初省略了这些细节。但现在我看到它们对这个问题很重要。
偶然的你
大话西游666
相关分类