如何打印以下界面的方法集?
type Searcher interface {
Search(query string) (found bool, err error)
ListSearches() []string
ClearSearches() (err error)
}
这样
Search
ListSearches
ClearSearches
打印出来了吗? (没有实现它的具体类型的知识)。
答案 0 :(得分:1)
reflect
包是这个的正确工具。使用反射可以获得变量的类型信息,而无需事先知道类型。这是一个代码片段,展示了如何获取接口所需定义的函数的函数名称
package main
import (
"fmt"
"reflect"
)
type Searcher interface {
Search(query string) (found bool, err error)
ListSearches() []string
ClearSearches() (err error)
}
func main() {
t := reflect.TypeOf(struct{ Searcher }{})
for i := 0; i < t.NumMethod(); i++ {
fmt.Println(t.Method(i).Name)
}
}
答案 1 :(得分:0)
使用反射:
t := reflect.TypeOf(new(Searcher)).Elem()
fmt.Println(t)
for i := 0; i < t.NumMethod(); i++ {
fmt.Println(t.Method(i).Name)
}
打印:
main.Searcher
ClearSearches
ListSearches
Search