Go 类型断言和类型转换
Go About 795 words示例
func main() {
var i interface{} = "hello"
s := i.(string)
fmt.Println(s) // hello
s, ok := i.(string)
fmt.Println(s, ok) // hello true
f, ok := i.(float64)
fmt.Println(f, ok) // 0 false
f = i.(float64) // panic 即使是字符串123也会panic 因为类型不同
fmt.Println(f)
}
类型转换
使用t := i.(T)
对已知interface{}
进行转换。
类型断言后转换
方式一
使用t, ok := i.(T)
对未知interface{}
进行断言,若ok
为true
,则t
赋值为转换后的值,若ok
为false
,则t
为类型对应的默认值(如:int
默认值是0
,string
默认值是""
)。
方式二
使用switch
来判断object.(type)
的类型并进行转换。
func Cast(object interface{}) {
switch object.(type) {
case string:
fmt.Println("string#", object.(string))
case int:
fmt.Println("int#", object.(int))
case float64:
fmt.Println("float64#", object.(float64))
// 其他类型
}
}
参考
Views: 1,627 · Posted: 2021-01-13
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...