2 回答

TA貢獻1817條經(jīng)驗 獲得超6個贊
使用類型開關根據(jù)值的類型執(zhí)行代碼。在這種情況下不需要使用反射。
func getData(data interface{}, value string) {
? ? if value != "" {
? ? ? ? switch data := data.(type) {
? ? ? ? case *int:
? ? ? ? ? ? *data, _ = strconv.Atoi(value)
? ? ? ? case *bool:
? ? ? ? ? ? *data, _ = strconv.ParseBool(value)
? ? ? ? case *string:
? ? ? ? ? ? *data = value
? ? ? ? }
? ? }
}

TA貢獻1802條經(jīng)驗 獲得超5個贊
您需要使用reflect.Value.Elem()來獲取實際值而不是指針本身。
這是一個快速要點:
func getData(data interface{}, value string) {
? ? switch v := data.(type) {
? ? case *int:
? ? ? ? val := reflect.ValueOf(v).Elem()
? ? ? ? intVal, _ := strconv.Atoi(value)
? ? ? ? val.SetInt(int64(intVal))
? ? }
}
- 2 回答
- 0 關注
- 115 瀏覽
添加回答
舉報