类型别名 与 自定义类型

类型别名:

别名是1.9版本添加的新功能

type TypeAlias = Type
    type byte = uint8
    type rune = int32

自定义类型:

在Go中有基本的数据类型,比如:string,int,bool等。还可以使用type关键字来自定义类型。

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

type MyInt int   将 MyInt 定义为 int 类型

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

区别:

类型别名与自定义类型,表面上看只有一个 = 的差别,通过代码来理解它们之间的区别。

package main

import (
    "fmt"
)

func main() {
    
    type NewInt int             // 自定义
    type MyInt = int            // 别名

    var a NewInt
    var b MyInt

    fmt.Printf("a的类型:%T 
",a)          // a的类型:main.NewInt
    fmt.Printf("b的类型:%T 
",b)          // b的类型:int

}

a的类型是 main.NewInt,表示main包下定义的NewInt类型。b的类型是int。

MyInt类型只会在代码中存在,编译完成时并不会有MyInt类型。