1. v, ok = x.(T)
    2. // x: 表示类型为interface{}的变量
    3. // T: 表示断言x可能是的类型。
    4. // v: x转化为T类型后的变量
    5. // ok: bool值, 表示断言成功或失败
    1. func main() {
    2. var x interface{}
    3. x = "pprof.cn"
    4. v, ok := x.(string)
    5. if ok {
    6. fmt.Println(v)
    7. } else {
    8. fmt.Println("类型断言失败")
    9. }
    10. }

    如果要断言多次就需要写多个if判断,这个时候我们可以使用switch语句来实现:

    1. func justifyType(x interface{}) {
    2. switch v := x.(type) {
    3. case string:
    4. fmt.Printf("x is a string,value is %v\n", v)
    5. case int:
    6. fmt.Printf("x is a int is %v\n", v)
    7. case bool:
    8. fmt.Printf("x is a bool is %v\n", v)
    9. default:
    10. fmt.Println("unsupport type!")
    11. }
    12. }