1 回答

TA貢獻1783條經(jīng)驗 獲得超4個贊
您可以使用 afor range來遍歷數(shù)字,這樣您就可以省略長度檢查,并使用 aswitch進行字段分配,例如:
for i, v := range numbers {
switch i {
case 0:
set.Number1 = v
case 1:
set.Number2 = v
case 2:
set.Number3 = v
}
}
在Go Playground上嘗試一下。
您還可以列出另一個切片中字段的地址,并使用單個循環(huán)進行分配:
ps := []*int{&set.Number1, &set.Number2, &set.Number3}
for i, v := range numbers {
*ps[i] = v
}
在Go Playground上嘗試一下。
如果性能不是很關鍵,而且你賦值的字段是順序的,你可以使用反射來賦值,而不必枚舉字段,例如:
rv := reflect.ValueOf(set).Elem()
for i, v := range numbers {
rv.Field(1 + i).Set(reflect.ValueOf(v)) // 1 is the offset of Number1
}
在Go Playground上嘗試一下。
- 1 回答
- 0 關注
- 107 瀏覽
添加回答
舉報