• 在golang中,自定义类型有别于类型别名,除有相同数据存储结构外,它们之间没有任何关系,不会持有原类型任何信息。除非目标类型是未命名类型,否则必须显式转换。比如以下例子:
package main

import (
    "fmt"
    "reflect"
)


type bigInt int64
type myslice []int

func main() {
    x := 1234
    var b bigInt = bigInt(x) //必须显式转换
    var b2 int64 = int64(b)  //必须显式转换
    fmt.Printf("b2的值是:%v,b2的类型是:%v\n", b2, reflect.TypeOf(b2))
    var s myslice = []int{1, 2, 3} //未命名类型,隐式转换
    var s2 []int = s
    fmt.Printf("s2的值是:%v,s2的类型是:%v\n", s2, reflect.TypeOf(s2))
}