golang 基礎知識3
阿新 • • 發佈:2018-01-10
斷言 val study article 使用 log post als 而不是
斷言: 參考 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
}
golang 基礎知識3