对于传入函数的值类型为interface切为nil时,进行强转时会发生panic。
func main() {
testString := getInterface().(string)
fmt.Println(testString)
}
func getInterface() interface{} {
return nil
}
Output:
panic: interface conversion: interface {} is nil, not string
可以进行以下方法的改进:
(对于传入的interface类型的值进行判断)
func main() {
testString := getInterface()
if testString != nil {
testString = testString.(string)
}
fmt.Println(testString)
}
func getInterface() interface{} {
return nil
}
Output:
<nil>