2 回答

TA貢獻1812條經驗 獲得超5個贊
u, ok := err.(interface {
Unwrap() error
})
此代碼確保 err 對象(它確實是一個接口)具有帶有 簽名的方法。例:Unwrap() error
package main
import (
"fmt"
)
type myError struct{}
func (e myError) Error() string {
return "it is my error"
}
func main() {
var e1 error
e1 = &myError{}
u, ok := e1.(interface {
Unwrap() error
})
fmt.Printf("e1: %v -> %v\n",u,ok)
e2 := fmt.Errorf("E2: %w", e1)
u, ok = e2.(interface {
Unwrap() error
})
fmt.Printf("e2: %v -> %v\n",u,ok)
}
這將打印
e1: <nil> -> false
e2: E2: it is my error -> true

TA貢獻1872條經驗 獲得超4個贊
錯誤類型為接口類型。錯誤變量表示可將自身描述為字符串的任何值。下面是接口的聲明:
type error interface { Error() string }
有關更多詳細信息,請參閱 - https://blog.golang.org/error-handling-and-go
- 2 回答
- 0 關注
- 127 瀏覽
添加回答
舉報