面试题答案
一键面试- 断言失败返回值:
在Go语言中,当对一个接口类型变量进行类型断言时,如果断言失败,会返回一个零值和
false
。例如,对于一个接口interface{}
类型的变量i
,如果尝试将其断言为string
类型失败,如下代码:
上述代码中,变量package main import ( "fmt" ) func main() { var i interface{} = 10 s, ok := i.(string) fmt.Printf("s: %v, ok: %v\n", s, ok) }
i
实际是int
类型,断言为string
类型失败,s
将是string
类型的零值(空字符串""
),ok
为false
。 - 正确处理断言失败的情况:
可以通过检查第二个返回值
ok
来处理断言失败的情况。如下是一个示例:
在上述代码中,通过package main import ( "fmt" ) func main() { var i interface{} = 10 if s, ok := i.(string); ok { fmt.Println("断言成功,值为:", s) } else { fmt.Println("断言失败") } }
if
语句检查ok
,如果ok
为true
,则说明断言成功,可以使用断言得到的值;如果ok
为false
,则说明断言失败,执行相应的错误处理逻辑。