如何使用`errors.Is`来检查一个错误是否为`strconv.NumError`类型。

huangapple go评论86阅读模式
英文:

How do I check if an error is strconv.NumError using errors.Is

问题

我有这个错误

如何使用`errors.Is`来检查一个错误是否为`strconv.NumError`类型。

这个错误是ParseInt类型的。我该如何检查这个错误?我猜我可以使用errors.Is,但不确定如何在这种情况下使用它。

英文:

I have this error

如何使用`errors.Is`来检查一个错误是否为`strconv.NumError`类型。

The error is of type ParseInt. How do I check for this error
I am assuming I would use errors.Is but not sure how I would do it for this case

答案1

得分: 2

type NumError struct {
	Func string // 失败的函数(ParseBool、ParseInt、ParseUint、ParseFloat、ParseComplex)
	Num  string // 输入
	Err  error  // 转换失败的原因(例如 ErrRange、ErrSyntax 等)
}

> 错误类型是 ParseInt。

"ParseInt" 是“失败的函数”的名称,即返回错误的函数。实际的错误类型是 *strconv.NumError。你可以这样检查错误类型和函数名称:

if e, ok := err.(*strconv.NumError); ok && e.Func == "ParseInt" {
    // 做一些操作
}
英文:

https://pkg.go.dev/strconv@go1.19.3#NumError

type NumError struct {
	Func string // the failing function (ParseBool, ParseInt, ParseUint, ParseFloat, ParseComplex)
	Num  string // the input
	Err  error  // the reason the conversion failed (e.g. ErrRange, ErrSyntax, etc.)
}

> The error is of type ParseInt.

"ParseInt" is the name of the "failing function", the one that returned the error. The actual error type is *strconv.NumError. You can check for that and the func name like so:

if e, ok := err.(*strconv.NumError); ok && e.Func == "ParseInt" {
    // do xyz
}

huangapple
  • 本文由 发表于 2022年11月18日 03:00:14
  • 转载请务必保留本文链接:https://go.coder-hub.com/74480760.html
匿名

发表评论

匿名网友

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

确定