Go - 34 Go 类型断言

基本介绍
    类型断言,由于接口是一般类型,不知道具体类型,如果要转成具体类型,就需要使用类型断言,具体如下:
    var a interface{}    
    var b float64 = 1.22     
    a = b  // 空接口可以接收任何类型     
    // 那如何把 a 变为 float64呢     
    x := a.(float64)  // 类型断言     
    fmt.Printf("x 的类型=%T 值==%v", x, x)  // x 的类型=float64 值==1.22
 
    对上面代码的说明:
        在进行类型断言时,如果类型不匹配,就会报panic,因此进行类型断言时,要确保原来的空接口指向的就是断言类型;
        如何在进行断言时,带上检测机制,如果成功就ok,否则也不要报panic;
        // 类型断言(带检测的)    --> 推荐使用
        x, ok := a.(float32)     
        if ok {         
            fmt.Println("convert success ..")         
            fmt.Printf("x 的类型=%T 值=~~%v \n", x, x)     
        }else {         
            fmt.Println("convert fail")     
        }     
        fmt.Println("继续执行~~~~")
 
断言的最佳实践(即在实际中应用)
    实现在多态数组中对结构体独有方法的实现
    定义一个函数对多个不确定类型的变量进行类型判断并且输出结果;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2020-12-19 19:43  以赛亚  阅读(94)  评论(0编辑  收藏  举报