获得徽章 0
- 有go大佬解答吗:用go语言实现一个方法,方法里面是:1.初始化一个map,map的value是接口的实现类 2.通过反射区获取接口的所有实现类,并把实现类放到map的value里面,3.可以通过接口的实现类去调用他的方法
chatGpt生成的:
package main
import (
"fmt"
"reflect"
)
type MyInterface interface {
Method() string
}
func initMyMap() map[string]MyInterface {
myMap := make(map[string]MyInterface)
intf := reflect.TypeOf((*MyInterface)(nil)).Elem()
for i := 0; i < 3; i++ { // 假设有3个实现了MyInterface的接口类型
obj := reflect.New(intf.Elem()).Interface().(MyInterface)
myMap[fmt.Sprintf("Impl%d", i)] = obj
}
return myMap
}
type MyStruct1 struct{}
func (s *MyStruct1) Method() string {
return "Hello from MyStruct1"
}
type MyStruct2 struct{}
func (s *MyStruct2) Method() string {
return "Hello from MyStruct2"
}
func main() {
myMap := initMyMap()
for _, obj := range myMap {
fmt.Println(obj.Method()) // 输出:Hello from MyStruct1 Hello from MyStruct2 ...
}
}展开评论2