导入应用程序中的本地库和文件

use*_*740 9 package go

我是Go的新手(但不是编程),我喜欢这种语言,但我完全理解我应该通过包在应用程序中创建内部库的方式有点麻烦.作为参考,获取外部包然后导入/使用它们很好.

假设我正在申请A.

/home/me/A/a.go (package main)
Run Code Online (Sandbox Code Playgroud)

然后,我意识到a.go开始变得相当大,所以我把它分成两部分

/home/me/A/a.go (package main)
/home/me/A/b.go (package main)
Run Code Online (Sandbox Code Playgroud)

我怎么能从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
Run Code Online (Sandbox Code Playgroud)

我的环境中没有GOPATH,但我尝试export GOPATH=$GOPATH:/home/me/A了并没有改变结果.

我试过阅读关于"go layout"的文章,但它立刻感觉有点压倒性的,我真的很想要一个更简单的解释我试图做的那个"小"步骤

谢谢 !

GOPATH/src目录/我/一个/ a.go:

package main

func main() {
        test()
}
Run Code Online (Sandbox Code Playgroud)

GOPATH/src目录/我/一个/ test.go:

package main

import "fmt"

func test() {
        fmt.Println("test func !")
}
Run Code Online (Sandbox Code Playgroud)

高管:

$ go run a.go 
# command-line-arguments 
./a.go:4: undefined: test
Run Code Online (Sandbox Code Playgroud)

编辑:在这里得到我的答案:https://groups.google.com/forum/?fromgroups#!topic / golang -nuts/qysy2bM_o1I

在go run(go run a.go test.go)中列出所有文件,或者使用go build并运行生成的可执行文件.

zzz*_*zzz 1

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

简而言之,这些是 go 工具的阻碍:

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

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

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

  • 我不明白上面的信息如何回答在与 a.go 同一目录中的文件中使用(例如结构)的问题 (8认同)