1. 程式人生 > >golang利用反射設定結構體變數的值

golang利用反射設定結構體變數的值

如果需要動態設定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的值, 非常強大.

歡迎補充指正!