Go 使用range for loop遍历所有方法

Go 使用range for loop遍历所有方法,go,Go,我有一个定义了方法的结构,我想遍历所有的方法。我可以使用接口{}或任何其他方法来实现这一点吗 type SomeStruct struct { m_boolVals []bool m_stringVals []string m_intVals []int64 } func (m *SomeStruct) GetBool() []bool { return m.m_boolVals } func (m *SomeStruct) GetString() []str

我有一个定义了方法的结构,我想遍历所有的方法。我可以使用接口{}或任何其他方法来实现这一点吗

type SomeStruct struct {
   m_boolVals []bool
   m_stringVals []string
   m_intVals []int64
   }

func (m *SomeStruct) GetBool() []bool {
    return m.m_boolVals
}

func (m *SomeStruct) GetString() []string {
    return m_stringVals
}

func (m *SomeStruct) GetInts() []int64 {
    return m_intVals 
}
有没有办法实现下面的代码?所以基本上只有一个有价值的存在

fun SomeOtherFunc(ss *SomeStruct) []string {
    var final_string []string
    for _, handlerFunc := range(ss.GetBool, ss.GetString, ss.GetInts) {
        generic_vals := handlerFunc()
        if (len(generic_vals) > 0) {
            for _, t_val := range(generic_vals)  {
                final_string = append(final_string , string(t_val))
            }
            break
        }
    }
    return final_string
}

下面是一个示例,您可以使用反射迭代方法并调用每个方法,并将其结果转换为
字符串

func SomeOtherFunc(ss *SomeStruct) []string {
    var result []string
    v := reflect.ValueOf(ss)
    for i := 0; i < v.NumMethod(); i++ {
        for _, res := range v.Method(i).Call(nil) {
            result = append(result, fmt.Sprint(res.Interface()))
        }
    }
    return result
}
哪些输出(在上尝试):


您可以获取所有方法并对它们进行迭代,甚至使用反射调用它们。这对你合适吗?你有示例吗?这有一个使用reflection@user8351493获取方法名的示例-看起来不错。。。但我如何称呼它们(那些方法)?
fmt.Println(SomeOtherFunc(&SomeStruct{
    m_boolVals:   []bool{true, false},
    m_stringVals: []string{"one", "two"},
    m_intVals:    []int64{1, 2, 3},
}))
[[true false] [1 2 3] [one two]]