我正在编写我的第一个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)
那么,在这种情况下的一般做法是什么?只是为所有内容创建软件包?
答案 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 了解详情。