在golang中使用自己的类型的最佳做法。联体打造型

混合:

我想知道何时或是否应该在golang中使用自己的类型。什么时候对理解我的代码更友好,或者什么时候我不应该使用自己的类型。

示例:我想map使用MAC创建类型,并命名为host

用最简单的方式我可以做到

var machines map[string]string{
   "11:22...": "myHost",
   "22:33..":  "yourHost",
}

在第二种方式

type MAC string
type HOST string

  machines := map[MAC]HOST{
       MAC("11:22..") : HOST("myHost"),
       MAC("22:33..") : HOST("yourHost"),
    }

在上述〔实施例,我可以让我的类型的其他CONTROLE MACHOSTtrought写入方法验证,比较等是更好?

第三路

type MACHINES map[string]string

m := MACHINES{}
    m = map[string]string{
     "11:22.." : "myHost",
     "22:33" : "yourHost",
    }

上面的例子对我来说最糟糕的是,对其他人的理解不够直观。我认为上面的示例也应该包含有关HOST和MAC的信息,因为键入MACHINE没什么好说的,开发人员应该如何实现,所以我想

  type MACHINES map[MAC]HOST

但是,请发表评论以更好地了解golang中的使用自己的类型。

胡安·卡洛斯·加西亚(Juan Carlos Garcia):

创建类型别名仅在需要添加其他方法(例如验证功能)或要记录某些值的期望用法(例如net.IP类型)时才有用

类型别名可以帮助您防止误解API,但是如果您使用常量值则不会。例如,此代码有效:

type Host string
type Mac string
hosts := map[Mac]Host{"ad:cb..": "localhost"}

有关常量在Go中如何工作的更多信息,您可以查看Rob Pike的博客文章。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章