有没有一种有效的方法来共享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,只需要新的模型包).

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

相关文章

1、Golang指针 在介绍Golang指针隐式间接引用前,先简单说下...
1、概述 1.1 Protocol buffers定义 Protocol buffe...
判断文件是否存在,需要用到"os"包中的两个函数: os.Stat(...
1、编译环境 OS :Loongnix-Server Linux release 8.3 CPU指...
1、概述 Golang是一种强类型语言,虽然在代码中经常看到i:=1...
1、概述 在《Golang常用语法糖》这篇博文中我们讲解Golang中...