ZBLOG

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

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

例如:

func getString(i interface{}) (string, error) {
    if i == nil {
        return "", fmt.Errorf("cannot convert nil interface to string")
    }
    s, ok := i.(string)
    if !ok {
        return "", fmt.Errorf("cannot convert %T to string", i)
    }
    return s, nil
}

func main() {
    defer func() {
        if r := recover(); r != nil {
            log.Printf("panic: %v", r)
        }
    }()
    
    var i interface{} = nil
    
    _, err := getString(i)
    if err != nil {
        panic(err)
    }
}

在上面的例子中,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

注册

已经有帐号?