10

我是 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/a.go:

package main

func main() {
        test()
}

GOPATH/src/me/a/test.go:

package main

import "fmt"

func test() {
        fmt.Println("test func !")
}

执行:

$ 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并运行生成的可执行文件。

4

1 回答 1

1

您正在尝试使用 Go 构建系统而不遵循必要的所需目录布局。阅读本文档,您将受益匪浅。

简而言之,这些是 go 工具,显示停止器:

  • 必须有一个有效的、导出的 GOPATH

  • 导入路径为“example/foo”的包文件必须位于$GOPATH/src/example/foo目录中。

有关更多详细信息,请参阅上面的链接文章。

于 2013-05-26T14:39:33.470 回答