美文网首页
golang的类型再定义和类型别名

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

作者: 舒小贱 | 来源:发表于2020-07-05 21:46 被阅读0次

    类型再定义:

    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的类型再定义和类型别名

          本文链接:https://www.haomeiwen.com/subject/nlovqktx.html