如何获取函数的参数类型

时间:2017-03-16 18:13:27

标签: go reflection types

我正在尝试使用结构的类型作为我希望得到的函数的一般参数:

type comments []struct {
    ID string `json:"id"`
    Author string `json:"author"`
    Text string `json:"text"`
}

handleReadAll("/getsome")

func handleReadAll(getPath string){
    var someVar comments 
}

因为你可以看到我有someVar作为类型注释,我需要对该类型进行泛型使用,这样我就可以使用带有泛型类型结构的handleReadAll这是我到目前为止所尝试的:

handleReadAll("/getsome",comments{})

func handleReadAll(getPath string,structToDecodeArray interface{}){
    var object2 reflect.ValueOf(&structToDecodeArray)
    var object = reflect.ValueOf(&structToDecodeArray)
    fmt.Println("var",object)
    fmt.Println("var",reflect.ValueOf(&structToDecodeArray).Interface())
    fmt.Println("var",reflect.TypeOf(&structToDecodeArray))
    fmt.Println("var",reflect.ValueOf(&structToDecodeArray).Type().Elem)
}

我无法完成这项工作,我使用反射来尝试获取参数structToDecodeArray的类型,我怎么能得到相同的var。

var someVar comments

但有反思。

1 个答案:

答案 0 :(得分:-1)

经过一些测试后,我设法得到它,我向函数发送了错误的参数我将其改为此

var paramVar comments
handleReadAll("/getsome",paramVar)

func handleReadAll(getPath string,structToDecodeArray interface{}){
      var someVar = reflect.ValueOf(structToDecodeArray).Interface()
}

这就是传递给函数的参数类型Interface的等效变量,就像有

一样
var someVar comments