断言: 参考 https://studygolang.com/articles/3314
var.(T)
类型断言失败时会返回T
类型的“0值”,而不是变量原始值。 var是要判断的变量,T类型,例如:sss.(string),T是type最好用的是interface或者一个strcut
其中var为interface{}类型 T是要断言的类型。
简单的string可以不使用这个
1)直接断言使用
var a interface{}
a = "xxxx"
fmt.Println("Where are you,Jonny?", a.(string))
但是如果断言失败一般会导致panic的发生。所以为了防止panic的发生,我们需要在断言前进行一定的判断
value, ok := a.(string) //value在正常值true/false, 如果没错误 ok是没有值的,如果有panic则ok是有值的
if value, ok := a.(string) ,ok {
fmt.Println(value, ok) //xxxx,true
}
if value, ok := a.(string) ,ok {
fmt.Println(value, ok)
} else {
fmt.Println(value, ok) //<nil>, false 如果ok为false则ok为false
}