golang利用反射設定結構體變數的值
阿新 • • 發佈:2018-12-14
如果需要動態設定struct變數field的情況下, 可以利用reflect來完成. 程式碼如下:
package main
import (
"fmt"
"reflect"
)
// 定義結構體Person
type Person struct {
Name string
Age int
}
func main() {
person := Person{}
fmt.Println(person) // 修改前 { 0}
pp := reflect.ValueOf(&person) // 取得struct變數的指標
field := pp.Elem().FieldByName ("Name") //獲取指定Field
field.SetString("gerrylon") // 設定值
field = pp.Elem().FieldByName("Age")
field.SetInt(26)
fmt.Println(person) // 修改後 {gerrylon 26}
}
總結:
利用 FieldByName()
方法可以設定struct的指定key的值, 非常強大.
歡迎補充指正!