1
package main

import (
    "fmt"
    "reflect"
)

type Aservice struct {
}

type Adata struct {
    msg string
}

type Bdata struct {
    more string
}

var amap map[string]interface{} = make(map[string]interface{}, 1024)

func (aser *Aservice) Bar(data *Adata) error {
    return nil
}

func (aser *Aservice) Foo(data *Bdata) error {
    return nil
}

func main() {
    var ser *Aservice
    typeOfService := reflect.TypeOf(ser)
    valueOfService := reflect.ValueOf(ser)

    for i := 0; i < valueOfService.NumMethod(); i++ {

        nref := valueOfService.Method(i).Type().In(0)
        fmt.Println("++", nref.Elem().Name())
        amap[typeOfService.Method(i).Name] = nref
    }
}

Currently "Adata" and "Bdata" can be printed correctly

But I don’t know how to store the empty structure pointers of "Adata" and "Bdata" in amap

No idea for the next step

I want to use Method(i).Name() in amap to store the parameters that need to be passed in for the Method

AM031447
  • 331
  • 1
  • 3
  • 16

0 Answers0