Go中同一软件包中的多个文件

Go中同一软件包中的多个文件,go,Go,我正在写我的第一个Go代码,其中包括发送电子邮件。在发现包net/smtp只支持Plain Auth(但outlook之类的一些提供商不支持它)之后,我要求提供一个解决方案,并被指给我 这段代码就像一个符咒,但由于它不是我自己写的,我想把它添加到一个单独的文件中,并在我的main.go中引用它 在同一个包中包含多个文件的正确方法是什么?我不想仅仅为代码创建一个不同的包,首先是因为它不是我的,其次是因为我认为这是一种“过度杀伤力”的方法,不是吗 我原以为只要文件在同一个目录中,我就可以有许多*.g

我正在写我的第一个Go代码,其中包括发送电子邮件。在发现包
net/smtp
只支持
Plain Auth
(但outlook之类的一些提供商不支持它)之后,我要求提供一个解决方案,并被指给我

这段代码就像一个符咒,但由于它不是我自己写的,我想把它添加到一个单独的文件中,并在我的
main.go
中引用它

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

我原以为只要文件在同一个目录中,我就可以有许多
*.go
文件,但这似乎行不通。如果我只是创建一个包含该要点内容的文件,编译器将失败,因为
预期的包,找到了import
。如果我添加类似于
package auth
的内容,那么它会失败,因为
找到了package auth(auth.go)和main(main.go)


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

一个目录中只能有一个程序包,而且看起来您不需要用于此添加的程序包,因此您只需将其放在单独的文件中,然后在顶部添加
程序包main
。拥有一个
main
包并将所有东西都放在它下面在一定程度上起作用。当事情变得越来越大时,您必须将其分解为自包含的包。

一个目录中只能有一个包,而且看起来您不需要包来进行此添加,因此您可以简单地将其放在单独的文件中,并在顶部添加
包main
。拥有一个
main
包并将所有东西都放在它下面在一定程度上起作用。当事情变得越来越大时,您必须将其分解为独立的包。

如果您当前的工作目录位于GOPATH中,那么您可以添加具有相同包名的新go文件
main


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


您还可以参考其他选项了解详细信息。

如果您当前的工作目录位于GOPATH中,则您可以添加具有相同包名的新go文件
main


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


您还可以参考其他选项了解详细信息。

一个目录中可以有任意多个文件,只要在每个文件的顶部使用相同的包声明,这些文件就可以是同一个包的一部分。i、 e.在auth文件中将
package auth
更改为
package main
。@mkopriva啊,我把这个信息搞错了,我认为包的名称必须是唯一的,这意味着
package foo
只能有一个定义。现在可以在两个文件中正常工作。您可能会发现“如何编写Go代码”是一个信息源。您可以在一个目录中拥有任意数量的文件,并且只要在每个文件的顶部使用相同的包声明,它们就可以是同一个包的一部分。i、 e.在auth文件中将
package auth
更改为
package main
。@mkopriva啊,我把这个信息搞错了,我认为包的名称必须是唯一的,这意味着
package foo
只能有一个定义。现在在两个文件中运行良好。您可能会发现“如何编写Go代码”是一个信息丰富的源代码。