乘风原创程序

  • golang 通过字符串动态调用对应结构体下的方法
  • 2020/8/11 17:18:33
  • golang 通过字符串动态调用对应结构体下的方法

    package main import ( "fmt" "reflect" ) type IRoute interface { test() test1() test2() } type Common struct { } func (c *Common) test() { fmt.Println("test") } func (c *Common) test1() { fmt.Println("test1") } func (c *Common) test2() { fmt.Println("test2") } type Login struct { Common } func (l *Login) test() { fmt.Println("Login test ---------") } type Auth struct { Common } func (a *Auth) test() { fmt.Println("Auth test ------------") } func (a *Auth) test1() { fmt.Println("Auth test1 -----------") } func addroute(route IRoute) { route.test() route.test1() route.test2() } var RegisterMessage = make(map[string]interface{}) func init() { RegisterMessage["login"] = &Login{} RegisterMessage["auth"] = &Auth{} } func main() { msg := RegisterMessage["login"] t := reflect.TypeOf(msg).Elem() n := reflect.New(t).Interface().(IRoute) addroute(n) msg1 := RegisterMessage["auth"] t1 := reflect.TypeOf(msg1).Elem() n1 := reflect.New(t1).Interface().(IRoute) addroute(n1) } 

    通过go反射机制,传入字符串找出对应的结构体并且调用方法,这样只需要在初始化RegisterMessage的时候注册对应结构体指针对象,之后调用的时候就可以根据字符串调用对应方法。

    本文地址:https://blog.csdn.net/qq_15115793/article/details/107915667