我目前有3个文件,它们顶部都有package main
。
GOPATH/src/example.com/myweb/main.go
GOPATH/src/example.com/myweb/api.go
GOPATH/src/example.com/myweb/viewmodels/home.go
当我编译时,我收到错误:
./main.go:21: undefined: Home
./main.go:39: api.Home undefined (type API has no field or method Home)
我正在编译:
go build
如果我这样做:
go build main.go api.go viewmodels/home.go
它没有说这样的文件或目录,然后是一个文件的路径,它不会出现这样的情况。存在:
GOPATH/src/example.com/myweb/viewmodels.main.go
如果我使用的是package main,那么这应该与go build一起使用吗?
答案 0 :(得分:1)
您不能在一个目录中混合使用两个不同的包。每个目录都是自己的包。
go文档(请参阅:golang.org/doc/code.html)说明了与您的情况相关的软件包:
- 每个包由一个目录中的一个或多个Go源文件组成。
- 程序包目录的路径决定了其导入路径。
您的问题的解决方案是: