1 回答

TA貢獻(xiàn)1777條經(jīng)驗 獲得超3個贊
因為這些字段的類型是int
,所以您必須輸入 assert to int
。
reflect.ValueOf(&new).Elem().Field(i).SetInt(int64(new_values.Field(i).Interface().(int) + values.Field(i).Interface().(int)))
另一種方法是使用Int()而不是 Interface().(int)。這種方法適用于所有有符號整數(shù)類型:
reflect.ValueOf(&new).Elem().Field(i).SetInt(new_values.Field(i).Int() + values.Field(i).Int())
以下是對所有數(shù)字類型執(zhí)行此操作的方法:
v := reflect.ValueOf(&new).Elem().Field(i)
switch v.Kind() {
case reflect.Int,
reflect.Int8,
reflect.Int16,
reflect.Int32,
reflect.Int64:
v.SetInt(new_values.Field(i).Int() + values.Field(i).Int())
case reflect.Uint,
reflect.Uint8,
reflect.Uint16,
reflect.Uint32,
reflect.Uint64:
v.SetUint(new_values.Field(i).Uint() + values.Field(i).Uint())
case reflect.Float32, reflect.Float64:
v.SetFloat(new_values.Field(i).Float() + values.Field(i).Float())
}
- 1 回答
- 0 關(guān)注
- 206 瀏覽
添加回答
舉報