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)
}
下面的编程工作的问题是我如何用time.Time类型像
这样做 package main
import (
"fmt"
"reflect"
)
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)
}
这很重要,因为我打算在通用结构
上使用它我真的很感谢你对此的帮助
答案 0 :(得分:14)
只需使用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)
}