Используя 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
и т. Д. Для улучшения предоставленного фрагмента?