面试题答案
一键面试package main
import (
"fmt"
)
func main() {
var i interface{} = "hello"
s, ok := i.(string)
if!ok {
fmt.Println("类型断言失败")
} else {
fmt.Println(s)
}
}
类型断言失败时,如果使用带检测的断言形式 v, ok := i.(T)
,ok
将为 false
,v
将是类型 T
的零值。例如在上述代码中,如果 i
实际类型不是 string
,s
将是 ""
(string
类型的零值),ok
为 false
。如果使用不带检测的断言形式 v := i.(T)
,当类型断言失败时会触发运行时恐慌(panic)。