ZBLOG

golang 怎么捕获 interface conversion: interface {} is nil, not string 报错

当尝试将一个 nil 的 interface{} 转换为 string 类型时,会出现 “interface conversion: interface {} is nil, not string” 的错误。要捕获这个错误,可以使用类型断言和 panic/recover。

例如:

  1. func getString(i interface{}) (string, error) {
  2. if i == nil {
  3. return "", fmt.Errorf("cannot convert nil interface to string")
  4. }
  5. s, ok := i.(string)
  6. if !ok {
  7. return "", fmt.Errorf("cannot convert %T to string", i)
  8. }
  9. return s, nil
  10. }
  11. func main() {
  12. defer func() {
  13. if r := recover(); r != nil {
  14. log.Printf("panic: %v", r)
  15. }
  16. }()
  17. var i interface{} = nil
  18. _, err := getString(i)
  19. if err != nil {
  20. panic(err)
  21. }
  22. }

在上面的例子中,getString 函数首先检查传入的参数是否为nil,并返回相应的错误。接下来,使用类型断言将 interface{} 转换为 string 类型。如果转换失败,则返回另一个错误。

在主函数中,我们使用 defer 和 recover 捕获了可能发生的 panic,并打印出错误信息。

通过这种方式,在代码中捕获和处理 “interface conversion: interface {} is nil, not string” 错误是可行的。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=5767

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?