使用here可用的go/types
包来解释go程序源代码ast
,我如何针对表达式的类型实现类型断言?
在下面的源代码中,我检查了一个ast查找调用表达式,提取了第一个参数以测试其类型
var p *loader.Program
ast.Inspect(f, func(n ast.Node) bool {
if call, ok := n.(*ast.CallExpr); ok {
if p.TypeOf(call.Args[0]).String() == "context.Context" { ... }
}
})
如何使用标准库中提供的功能,例如types.AssertableTo
,types.ConvertibleTo
等来改进提供的代码段?