有没有一种有效的方法来共享golang包之间的结构?

前端之家收集整理的这篇文章主要介绍了有没有一种有效的方法来共享golang包之间的结构?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Go中有一个简短的程序,其中包含以下文件.
程序目录结构:
myprogram/
    main.go
    server.go
    routines.go
    structs.go

这些不同的文件包含不同的功能structs.go文件包含一个定义的结构类型列表,并在我的程序的几个文件中使用.我想要做的,现在是将我的程序拆分为包,如下例所示:

main/
    main.go // the main program
server/
    server.go // a package imported in main
routines/
    routines.go // a package imported in main

我的问题是,我不知道在哪里放置structs.go,因为它包含在几个包中使用的结构,如’main.go’代码.

如何有效地分享这个structs.go文件?我应该在我定义的每个包中包含它(通过符号链接文件),即服务和例程,还包括主要的?

我的方法可能很尴尬,因为我是Go的初学者,一般是编程.

不要跨包来链接文件,这是不好的做法.首先,代码将被复制.另一方面,标识符将被复制,意味着表示相同的实体(例如类型或功能),但它们将是不同的.例如.如果链接和structs.go将包含一个类型响应定义,您将有2个不同类型server.Response和routines.Response给出更多的混淆.

一种解决方案是将structs.go放入其自己的包中,例如模型,以及依赖它的所有其他包可以导入它(例如你的主,服务器和例程).

在一个理论示例中:如果包A导入包B并且两者都需要structs.go,那么它也可以添加到包B中.如果包C只需要structs.go,那么它将更加明智创建自己的包模型(因此包C不需要导入/了解包B,只需要新的模型包).

此外,如果没有其他人将使用您的包,并且它不是太复杂,可能不值得麻烦将其组织到多个包中.

猜你在找的Go相关文章