Go语言中cannot convert cacheData (type interface {}) to type *: need type assertion 的解决办法(类型断言)

李鹏0 737 次浏览

我在写项目时突然遇到一个报错:

cannot convert cacheData (type interface {}) to type []uint8: need type assertion

这个报错的解决办法是:

cacheData.(TYPE)

但是如果断言失败一般会导致panic的发生。所以为了防止panic的发生,我们需要在断言前进行一定的判断,如果断言失败,那么ok的值将会是false,但是如果断言成功ok的值将会是true,同时value将会得到所期待的正确的值。示例:

value, ok := a.(string)
if !ok {
    fmt.Println("It's not ok for type string")
    return
}
fmt.Println("The value is ", value)

如果需要具体了解,请查询 go 语言中 断言的相关资料。

 

 

 

 

 


发表评论

? razz sad evil ! smile oops grin eek shock ??? cool lol mad twisted roll wink idea arrow neutral cry mrgreen