在Go程序中使用多个文件

时间:2014-08-29 00:39:51

标签: import go package

我希望学习如何将Go包中的代码逻辑拆分为多个文件,关键的是,在同一个包的另一个文件中使用该拆分/单独文件所需的语法。

我已经以这种形式创建了一个go项目

-test
    -bin
    -pkg
    -src
        -main
            main.go
            test.go

并尝试运行go build maingo build main.go test.go,但我总是遇到错误。

test.go仅包含此代码

package main
import "fmt"
func do(b string) {
    fmt.Println(b)
}

我希望能够在main.go中致电do("x")。 现在main.go中的所有内容都是

package main
func main() {
    test.do("x")
}

我不知道如何让它发挥作用。许多答案似乎建议将test.go移动到目录“test”中。我希望Go不要求我为我编写的每一段代码创建一个目录,但也许我会“对抗系统”。许多答案都指向了一个网站,告诉我要建立上面的目录结构,并使用go install来编译我的二进制文件,但这不起作用。

我只是想知道如何在package / y.go中使用package / x.go中的函数,即使它们在同一个包中。必须有一种方法可以做到这一点,否则我会有一堆不必要的包或难以理解的单片文件。

我知道有很多类似的问题,但在我的搜索中,我无法在同一个包中相互引用的两个文件中找到代码的实际示例。

2 个答案:

答案 0 :(得分:4)

如果在同一目录中,

test.go必须位于同一个包中。因此,对于这两个文件,包都是main,并且您可以在同一个包中调用do("x")

此外,您可以像这样构建整个包,而无需指定单个文件。

export GOPATH="<path to>/test"

go build main

答案 1 :(得分:0)

do,而不是test.do。 (身体必须至少30个字符;为了简洁,该死的天赋!)