我是Go的新手(但不是编程),我喜欢这种语言,但是我完全理解我应该通过包在应用程序中创建内部库的方式有点麻烦。作为参考,获取外部包然后导入/使用它们很好。
假设我正在申请A。
/home/me/A/a.go (package main)
然后,我意识到a.go开始变得相当大,所以我把它分成两部分
/home/me/A/a.go (package main)
/home/me/A/b.go (package main)
我如何从a.go导入/包含b.go以使其功能可用?
作为问题的延续,在A中我操纵了很多对象O,所以我认为如果我给它们自己的包并将功能封装在公共/导出的api中会更好。我该怎么做?
我已尝试创建./lib/o.go
(包o)和import lib/o
,但我一直收到错误
./a.go:6: imported and not used: "o"
./a.go:43: undefined: o
我的环境中没有GOPATH,但我尝试了export GOPATH=$GOPATH:/home/me/A
并且没有改变结果。
我试过阅读关于“go layout”的文章但是它立刻感觉有点压倒性的我真的很想要一个更简单的解释我想要做的那个“小”步骤
谢谢!
GOPATH / SRC / ME /一个/ a.go:
package main
func main() {
test()
}
GOPATH / SRC / ME /一个/ test.go:
package main
import "fmt"
func test() {
fmt.Println("test func !")
}
Exec的:
$ go run a.go
# command-line-arguments
./a.go:4: undefined: test
编辑:我的答案在这里:https://groups.google.com/forum/?fromgroups#!topic/golang-nuts/qysy2bM_o1I
列出go run(go run a.go test.go
)中的所有文件或使用go build
并运行生成的可执行文件。
答案 0 :(得分:1)
您正在尝试使用Go构建系统,而不是遵循必要的目录布局。通过阅读this document,您将从中受益匪浅。
简而言之,这些是go go工具,show showpers:
您必须拥有有效的导出GOPATH
导入路径为“example / foo”的包文件必须位于$GOPATH/src/example/foo
目录中。
有关详细信息,请参阅上面的链接文章。