美文网首页
go语言类型别名与类型声明的区别

go语言类型别名与类型声明的区别

作者: __robin | 来源:发表于2019-01-22 14:46 被阅读0次

    语法

    type name = string // 类型别名
    type name string   // 类型声明
    
    • type name stringname定义为一个新的类型,该类型拥有和string一样的特性,但是两者是不用的类型,不可用+进行拼接等运算。
    • type name = stringname定义为string的一个别名,使用namestring相同。二者可以当做同一种类型运算。别名只在源码中存在,编译完成后,不会有别名类型。

    下面用代码说明

    1.声明新的类型

    package main
    
    import "fmt"
    
    type name string
    
    var myName name = "robin"
    var str string = " is handsome"
    
    func main() {
        fmt.Printf("%T, %v\n", myName, myName) //main.name, robin
        fmt.Printf("%T, %v\n", str, str)  //string,  is handsome
        fmt.Println(myName+str)  //编译时会报错: invalid operation:myName + str (mismatched types name and string)
    }
    

    2.声明类型别名

    package main
    
    import "fmt"
    
    type name = string
    
    var myName name = "robin"
    var str string = " is handsome"
    
    func main() {
        fmt.Printf("%T, %v\n", myName, myName) //string, robin
        fmt.Printf("%T, %v\n", str, str)  //string,  is handsome
        fmt.Println(myName+str)  //编译正常,输出:robin is handsome
    }
    

    相关文章

      网友评论

          本文标题:go语言类型别名与类型声明的区别

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