如何设置时间类型的字段的值。时间就是时间。

我有一个类型的结构


type test struct {

    fname string

    time time.Time

}

我想将字段“time”的值设置为时间。Now() 仅使用反射包。


我正在创建一个类似于这样的函数:


func setRequestParam(arg interface{}, param string, value interface{}) {

    v := reflect.ValueOf(arg).Elem()

    f := v.FieldByName(param)

    if f.IsValid() {

        if f.CanSet() {

            if f.Kind() == reflect.String {

                f.SetString(value.(string))

                return

            } else if f.Kind() == reflect.Struct {

                f.Set(reflect.ValueOf(value))

            }

        }

    }

}

我试图修复的是这个表达式,我在这里得到一个错误。f.Set(reflect.ValueOf(value))


蛊毒传说
浏览 56回答 1
1回答

波斯汪

您必须导出结构字段,否则只有声明包才能访问它们。type test struct {    Fname string    Time  time.Time}通过此更改,您的函数将正常工作。setRequestParam()测试它:t := test{}setRequestParam(&t, "Fname", "foo")setRequestParam(&t, "Time", time.Now())fmt.Printf("%+v\n", t)输出(在Go Playground上尝试):{Fname:foo Time:2009-11-10 23:00:00 +0000 UTC m=+0.000000001}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go