IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    golang中类型比较和类型赋值说明

    mckee发表于 2016-07-31 22:40:54
    love 0

    golang文档中对type有说明:
    命名类型,有类型名称如 int, int64, float, string, bool. 还有自定义的命名类型。
    非命名类型,没类型名称 []string, map[string]string, [4]int. 当比较两个命名类型的时候,类型名称必须一样;当比较命名类型和非命名类型的时候,底层类型一样即可。

    import (
        "fmt"
        "reflect"
    )
    
    type T1 []string
    type T2 []string
    
    func main() {
        foo0 := []string{}
        foo1 := T1{}
        foo2 := T2{}
        fmt.Println(reflect.TypeOf(foo0))
        fmt.Println(reflect.TypeOf(foo1))
        fmt.Println(reflect.TypeOf(foo2))
    
        // Output:
        // []string
        // main.T1
        // main.T2
    
        // foo0 can be assigned to foo1, vice versa
        foo1 = foo0
        foo0 = foo1
    
        // foo2 cannot be assigned to foo1
        // prog.go:28: cannot use foo2 (type T2) as type T1 in assignment
        // foo1 = foo2
    }



沪ICP备19023445号-2号
友情链接