【发布时间】:2013-05-21 13:07:07
【问题描述】:
我是 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 并运行生成的可执行文件。
【问题讨论】:
-
如果两个文件在同一个目录下,它们就形成一个包。不需要 import 语句来获取在同一包的不同文件中声明的符号。
-
@FUZxxl:您能看看我在问题末尾添加的简单示例吗?我似乎无法让它工作,我想我正在做一些明显错误的事情,它让我无法接受。谢谢
-
回答自己,但在这里得到了我的答案:groups.google.com/forum/?fromgroups#!topic/golang-nuts/… 要么列出 go run (
go run a.go test.go) 中的所有文件,要么使用go build并运行生成的可执行文件。