• Go语言基础之类型别名和自定义类型


    Go语言基础之类型别名和自定义类型

    Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。

    一、自定义类型

    在Go语言中有一些基本的数据类型,如string整型浮点型布尔等数据类型, Go语言中可以使用type关键字来定义自定义类型。

    自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义。例如:

    //将MyInt定义为int类型
    type MyInt int
    

    通过Type关键字的定义,MyInt就是一种新的类型,它具有int的特性。

    二、类型别名

    类型别名是Go1.9版本添加的新功能。

    类型别名规定:TypeAlias只是Type的别名,本质上TypeAlias与Type是同一个类型。就像一个孩子小时候有小名、乳名,上学后用学名,英语老师又会给他起英文名,但这些名字都指的是他本人。

    type TypeAlias = Type
    

    我们之前见过的runebyte就是类型别名,他们的定义如下:

    type byte = uint8
    type rune = int32
    

    三、类型定义和类型别名的区别

    类型别名类型定义表面上看只有一个等号的差异,我们通过下面的这段代码来理解它们之间的区别。

    //类型定义
    type NewInt int
    
    //类型别名
    type MyInt = int
    
    func main() {
        var a NewInt
        var b MyInt
        
        fmt.Printf("type of a:%T\n", a) //type of a:main.NewInt
        fmt.Printf("type of b:%T\n", b) //type of b:int
    }
    

    结果显示a的类型是main.NewInt,表示main包下定义的NewInt类型。b的类型是intMyInt类型只会在代码中存在,编译完成时并不会有MyInt类型。

    四、总结

    1. 类型定义:type 类型名 类型 type NewInt int, 自定义类型和原类型是两种不同的类型,会创建新类型

    2. 类型别名:type 类型名 = 类型 type MyInt = int,类型别名和原类型一样,并没有创建新类型

  • 相关阅读:
    汉字转拼音的一个类(C#)
    对象当前正在其他地方使用 异常
    关于IE无法打开站点XX已终止操作问题
    C语言有以下几种取整方法:
    做发型屋碰到的
    glTexImage2D()函数的使用注意点
    python爬取百度图片——翻页式网站爬取
    js 中文传值乱码记录
    Wp7 日志 工具
    基于 Android NDK 的学习之旅 Java 方法映射到C中的签名(附源码)
  • 原文地址:https://www.cnblogs.com/randysun/p/15417197.html
Copyright © 2020-2023  润新知