// +build ignore package main import ( "fmt" "go/ast" "go/parser" "go/token" ) func main() { src := ` package http type Handler interface { ServeHTTP(ResponseWriter, *Request) } ` f, _ := parser.ParseFile(token.NewFileSet(), "", src, 0) typ := f.Decls[0].(*ast.GenDecl).Specs[0].(*ast.TypeSpec).Type.(*ast.InterfaceType) fndecl := typ.Methods.List[0].Type.(*ast.FuncType) // fndecl: (ResponseWriter, *Request) ast.Inspect(fndecl, func(n ast.Node) bool { // HL if ident, ok := n.(*ast.Ident); ok { fmt.Println(ident.Name) } return true }) } // end main // OMIT