类型断言
断言 在现代化 程序中 有助于 终止代码 , 防止 更大的 错误产生
package mainimport "fmt"func main() {var i interface{} = "hello"s := i.(string)fmt.Println(s)s, ok := i.(string)fmt.Println(s, ok)f, ok := i.(float64)fmt.Println(f, ok)f = i.(float64) // panicfmt.Println(f)
}
类型分支 根据 变量 类型进行分支
package mainimport "fmt"func do(i interface{}) {switch v := i.(type) {case int:fmt.Printf("Twice %v is %v\n", v, v*2)case string:fmt.Printf("%q is %v bytes long\n", v, len(v))default:fmt.Printf("I don't know about type %T!\n", v)}
}func main() {do(21)do("hello")do(true)
}