1 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
問(wèn)題中的代碼沒(méi)有錯(cuò)。下面介紹如何使用反射 API 來(lái)實(shí)現(xiàn)目標(biāo):
導(dǎo)出字段以使字段可通過(guò)反射 API 進(jìn)行設(shè)置。
type Employee struct {
FirstName string
LastName string
Role string
}
為員工創(chuàng)造反映價(jià)值。和 惡作劇是獲取可設(shè)置值所必需的。&Elem()
var e Employee
v := reflect.ValueOf(&e).Elem()
對(duì)于每個(gè)字段,設(shè)置字符串:
for i := 0; i < v.NumField(); i++ {
v.Field(i).SetString(values[i])
}
在 Go 游樂(lè)場(chǎng)上運(yùn)行一個(gè)示例。
如果需要將代碼放在多個(gè)位置,請(qǐng)將代碼放在函數(shù)中:
// setStrings sets the fields of the struct pointed
// to by ptr to the specified values.
func setStrings(ptr interface{}, values []string) {
v := reflect.ValueOf(ptr).Elem()
for i := 0; i < v.NumField(); i++ {
v.Field(i).SetString(values[i])
}
}
這樣稱呼它:
values := []string{"Monica", "Smith", "Manager"}
var e Employee
setStrings(&e, values)
fmt.Printf("%+v\n", e) // prints {FirstName:Monica LastName:Smith Role:Manager}
在操場(chǎng)上運(yùn)行一個(gè)示例。
- 1 回答
- 0 關(guān)注
- 100 瀏覽
添加回答
舉報(bào)