无法将err转换为go-sqlite3.Error

无法将err转换为go-sqlite3.Error,go,go-sqlite3,Go,Go Sqlite3,我正在尝试转换Go-Go-sqlite3.Error中的错误,但它总是失败。 上图表示调试窗口的快照,显示错误类型为go-sqlite3.Error 我使用下面的代码来输入cast import ( "github.com/mattn/go-sqlite3" ) if err != nil { if sqlite3Err, ok := err.(*sqlite3.Error); ok { if sqlite3Err.Code == sqlite3.ErrCons

我正在尝试转换Go-Go-sqlite3.Error中的错误,但它总是失败。 上图表示调试窗口的快照,显示错误类型为go-sqlite3.Error

我使用下面的代码来输入cast

import (
    "github.com/mattn/go-sqlite3"
)

if err != nil {
    if sqlite3Err, ok := err.(*sqlite3.Error); ok {
        if sqlite3Err.Code == sqlite3.ErrConstraint && sqlite3Err.ExtendedCode == 1555 {
            // SQLITE3 ERROR 1555 : PRIMARY KEY CONSTRAINT ERROR
            return errors.New("Log Error")
        }
    }

试试下面的例子<代码>错误。(*sqlite3.Error)更改为
err。(sqlite3.Error)


如果你打印它的类型,你会看到什么
fmt.Printf(“%T”,err)
?Go中没有类型转换。代码试图做的是类型断言。如果此磁带断言失败,则意味着您把类型搞糟了。您应该阅读返回错误的函数的文档,并仔细查看其签名。非常感谢您发布此答案。它有效@AshishMittal:)
if sqlite3Err, ok := err.(sqlite3.Error); ok {
    if sqlite3Err.Code == sqlite3.ErrConstraint &&
        sqlite3Err.ExtendedCode == 1555 {
        // logic 
    }
}