我想知道何时或是否应该在 golang 中使用自己的类型。当这将更容易理解我的代码时,或者当我不应该使用自己的类型时。
示例:我想创建带有MAC 的map类型,并命名为 host:
我可以用第一种最简单的方式做到这一点
var machines map[string]string{
"11:22...": "myHost",
"22:33..": "yourHost",
}
Run Code Online (Sandbox Code Playgroud)
第二种方式
type MAC string
type HOST string
machines := map[MAC]HOST{
MAC("11:22..") : HOST("myHost"),
MAC("22:33..") : HOST("yourHost"),
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我可以对我的类型进行额外的控制MAC,HOST通过编写验证、比较等方法更好吗?
第三条路
type MACHINES map[string]string
m := MACHINES{}
m = map[string]string{
"11:22.." : "myHost",
"22:33" : "yourHost",
}
Run Code Online (Sandbox Code Playgroud)
上面的例子对我来说是最难理解的,对其他人来说不太直观。我认为上面的示例还应该填写有关 HOST 和 MAC 的内容,因为类型 MACHINE 没有说明开发人员应该如何实现,所以我想
type MACHINES map[MAC]HOST
Run Code Online (Sandbox Code Playgroud)
但是,请评论以更好地了解 golang 中使用自己的类型。
小智 5
在不评论您的具体示例的情况下,您通常希望使用新类型有几个原因:
net.Conn,您可以创建一个type Conn net.Conn并返回它,而不只是为了将函数分组到 Conn 下在 godoc 中键入 header 或为方法返回的 net.Conn 提供一般文档)。