【Golang系列】-类型定义和类型别名

2022-03-16

类型定义和类型别名
类型定义

type NewType Type

示例:

package main

import (
    "fmt"
)

func main() {
    type MyInt int //类型定义
    var i MyInt    //i 为MyInt类型
    i = 100
    fmt.Printf("i:%v i:%T\n", i, i)
}

结果:

[Running] go run "/Users/lihui/Desktop/gocode/src/chapter07/demo05.go"
i:100 i:main.MyInt

[Done] exited with code=0 in 0.522 seconds

go语言类型别名

type NewType = Type

示例:

package main

import (
    "fmt"
)

func main() {
    type MyInt = int //类型定义
    var i MyInt      //i 为MyInt类型
    i = 100
    fmt.Printf("i:%v i:%T\n", i, i)
}

结果:

[Running] go run "/Users/lihui/Desktop/gocode/src/chapter07/demo05.go"
i:100 i:int

[Done] exited with code=0 in 0.862 seconds

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

  • 类型定义相当于定义了一个全新的类型,与之前的类型不同;但是类型别名并没有定义一个新的类型,而是使用一个别名替换之前的类型
  • 类型别名只会在代码中存在,在编译完成之后并不会存在该别名
  • 因为类型别名和原来的类型是一致的,所以原来类型所拥有的方法,类型别名也可以调用,但是如果是重新定义的一个类型 ,那么不可以调用之前的任何方法