Go中同一包中的多个文件

时间:2019-09-09 17:10:39

标签: go

我正在编写我的第一个Go代码,其中包括发送电子邮件。在发现软件包net/smtp仅支持Plain Auth(但是诸如Outlook之类的某些提供程序不支持它)之后,我要求一个解决方案并指出https://gist.github.com/andelf/5118732

该代码的工作原理很吸引人,但是由于它不是我自己编写的,因此我想将其添加到一个单独的文件中,然后在我的main.go中引用它。

在同一个程序包中包含多个文件的正确方法是什么?我不想为该代码创建另一个包,首先是因为它不是我的,其次是因为我认为这是一种“过度杀伤”的方法,不是吗?

我认为,只要文件位于同一目录中,我就可以有许多*.go文件,但是似乎没有用。如果我仅创建具有该要点内容的文件,则编译器将失败,因为expected package, found import。如果我添加诸如package auth之类的内容,则会失败,因为found packages auth (auth.go) and main (main.go)

那么,在这种情况下的一般做法是什么?只是为所有内容创建软件包?

2 个答案:

答案 0 :(得分:1)

您在目录中只能有一个软件包,并且看起来不需要软件包,因此您可以将其放在单独的文件中,并在顶部添加package main。拥有main程序包并将其放在下面可以正常工作。随着事情变大,您必须将其分解成独立的程序包。

答案 1 :(得分:0)

如果您当前的工作目录在 GOPATH 中,那么您只需添加具有相同包名 main 的新 go 文件。

如果您当前的工作目录不在 GOPATH 中,您仍然可以将它们放在多个 go 文件中,并且在运行程序时,您应该使用 go run *.go 而不是仅使用 go run main.go

还有其他选项,您可以参考 Run code with multiple files in the same main package in GoLang 了解详情。