【发布时间】:2017-08-14 04:56:51
【问题描述】:
有没有更好的方法来做到这一点?我需要知道 v 的类型是否是内置的“错误”类型。我觉得应该有一种更简洁的方法:
import (
"go/ast"
"go/types"
)
func IsError(v ast.Expr, info types.Info) bool {
t := info.Types[v]
return t.Type.String() == "error" &&
t.Type.Underlying().String() == "interface{Error() string}"
}
【问题讨论】:
-
请添加一个可运行的链接。例如使用github.com/plutov/playgo
-
这是一个可运行的示例:play.golang.org/p/MrhlFdBN3w
-
我觉得这个就够了:return info.Types[v].Type.String() == "error"
标签: go types abstract-syntax-tree