猿问

go中的反射问题

我正在尝试在 go 中使用反射。为什么这段代码没有列出方法?它列出了字段。


这是问题吗?“值接口{}”我不确定如何将通用结构/类/类型传递给函数。通常我只会传递一个对象。


(我对此完全陌生。我是 C# 程序员)


package main


import (

"fmt"

"reflect"

)


func main() {

    var B TestType = TestType{TestString: "Hello", TestNumber: 3}

    ListMethods(B)

}


func ListMethods(value interface{}) {


    fooType := reflect.TypeOf(value)


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

        method := fooType.Method(i)

        fmt.Println("Method = " + method.Name)

    }


    for i := 0; i < fooType.NumField(); i++ {

        field := fooType.Field(i)

        fmt.Println("Field = " + field.Name)

        fmt.Println(reflect.ValueOf(value).Field(i))

    }

}


type TestType struct {

    TestString string

    TestNumber int

}


func (this *TestType) TestFunction() {

    fmt.Println("Test")

}


拉莫斯之舞
浏览 202回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答