golang 按时设置值.Time

标签 go

package main

import (
    "fmt"
    "reflect"
)

func main() {
    type t struct {
        N int
    }
    var n = t{42}
    fmt.Println(n.N)
    reflect.ValueOf(&n).Elem().FieldByName("N").SetInt(7)
    fmt.Println(n.N)
}

下面的 prog 工作问题是我如何使用 time.Time 类型来做到这一点

package main

import (
    "fmt"
    "reflect"
    "time"
)

func main() {
    type t struct {
        N time.Time
    }
    var n = t{ time.Now() }
    fmt.Println(n.N)
    reflect.ValueOf(&n).Elem().FieldByName("N"). (what func)   (SetInt(7) is only for int)         // there is not SetTime
    fmt.Println(n.N)
}

这很重要,因为我打算在通用结构上使用它

非常感谢你在这方面的帮助

最佳答案

只需调用 Set() 并使用您要设置的时间的 reflect.Value 即可:

package main

import (
    "fmt"
    "reflect"
    "time"
)

func main() {
        type t struct {
                N time.Time
        }
        var n = t{time.Now()}
        fmt.Println(n.N)

        //create a timestamp in the future
        ft := time.Now().Add(time.Second*3600)

        //set with reflection
        reflect.ValueOf(&n).Elem().FieldByName("N").Set(reflect.ValueOf(ft))

        fmt.Println(n.N)
}

关于golang 按时设置值.Time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24083932/

相关文章:

json - 嵌套 JSON 中的相同结构

function - Golang 文档中 "a"之前的 "..."和 "interface{}"是什么意思?

Go模板表达式

multithreading - 基于 Go 的 http 包构建的 Web 应用程序是否作为使用多个线程处理传入请求的单个进程工作?

go - goLang仅在同一文件中查找事件

http - 在 http.FileServer 上记录 404

go - Gorilla xmlrpc 的小写方法

go - 结构体方法的参数传递语义是否完全由方法而不是调用者决定?

go - 当用户已确认时,Cognito 抛出 ErrCodeNotAuthorizedException

go - 如何在 Go 中编译程序