golang的类型再定义和类型别名

舒小贱 · · 1483 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

类型再定义:

type A int32

类型别名:

type A = int32

1,类型再定义的使用

类型再定义,一般用在为一个类型添加一个独有的方法使用。再定义的类型,和原类型的方法,不再有交集。
以我们的http包为例:

package http

type HandlerFunc func(w ResponseWriter, r *Request)

func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) {
    f(w, r)
}

2,类型别名的使用

类型别名,和原类型完全一样,原类型的方法,别名类型也可以使用。
golang中两个内置的类型别名的例子:

type byte = uint8
type rune = int32

类型别名的设计初衷,是为了解决代码重构时,类型在包之间转移时产生的问题。

别名在代码重构中非常有用,例如以前使用的是p.T这个类型,重构过程中需要把它移到p1.T1,
这时只需要在p包中定义type T = p1.T1,这样基本之前使用p.T的代码都不用修改

类型别名的好处:

  • 名字可以起的通俗易懂
  • 需要修改数据类型时,只需要改原类型定义的那个地方。使用的地方都可以不用改动。
  • 可以很方便的添加特有方法,以实现某些接口
  • 当原始类型为不可导出(小写)时,别名类型可以定义成导出(大写)的
type t1 struct { //不可导出
    S string
}
type T2 = t1 //可导出

参考

https://fenggolang.github.io/2018/09/golang%E4%B8%AD%E7%B1%BB%E5%9E%8B%E5%88%AB%E5%90%8D%E4%B8%8E%E7%B1%BB%E5%9E%8B%E5%86%8D%E5%AE%9A%E4%B9%89/


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:舒小贱

查看原文:golang的类型再定义和类型别名

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1483 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传