- 主题:经常碰到这种情况
经常想提练个方法,传个参数 为了可以传多种结构体数组,参数类型写的interface{}
在方法里又经常要判断类型 比如传过来的是数组,我要for range,还必须像这样.([]类型)
想办法也想不出个方法来,最后只能放弃,cv cv一堆一样的代码删除这个方法了
switch type 能解决 但是以后多一种结构体的话还得改代码
如果用reflect 试了半天不太会弄,搞出来的类型都是string或reflect.type,这种的不知道怎么放到强制转换的那个括号里,或是还有啥办法吗?
--
FROM 221.219.185.*
写成多个函数不好吗
【 在 mrg 的大作中提到: 】
: 经常想提练个方法,传个参数 为了可以传多种结构体数组,参数类型写的interface{}
: 在方法里又经常要判断类型 比如传过来的是数组,我要for range,还必须像这样.([]类型)
: 想办法也想不出个方法来,最后只能放弃,cv cv一堆一样的代码删除这个方法了
: switch type 能解决 但是以后多一种结构体的话还得改代码
: 如果用reflect 试了半天不太会弄,搞出来的类型都是string或reflect.type,这种的不知道怎么放到强制转换的那个括号里,或是还有啥办法吗?
--
FROM 27.38.197.*
重复代码
只有.(这里) 不一样 其它差不多都能reflect搞定了
【 在 flw 的大作中提到: 】
: 写成多个函数不好吗
--
FROM 221.219.185.*
reflect 有性能问题,重复没什么不好的。
如果重复的实在太多,可以用 go generate
【 在 mrg 的大作中提到: 】
: 重复代码
: 只有.(这里) 不一样 其它差不多都能reflect搞定了
--
FROM 27.38.197.*
把重复部分统一成接口的方法,然后所有要传的结构体或数组都实现该方法
【 在 mrg 的大作中提到: 】
: 经常想提练个方法,传个参数 为了可以传多种结构体数组,参数类型写的interface{}
: 在方法里又经常要判断类型 比如传过来的是数组,我要for range,还必须像这样.([]类型)
: 想办法也想不出个方法来,最后只能放弃,cv cv一堆一样的代码删除这个方法了
: ...................
--
FROM 221.219.103.*
用泛型。泛型比空接口加反射快多了
【 在 mrg 的大作中提到: 】
: 经常想提练个方法,传个参数 为了可以传多种结构体数组,参数类型写的interface{}
:
: 在方法里又经常要判断类型 比如传过来的是数组,我要for range,还必须像这样.(\[\]类型)
:
: 想办法也想不出个方法来,最后只能放弃,cv cv一堆一样的代码删除这个方法了
: ..................
发自「今日水木 on HMA-AL00」
--
FROM 1.90.240.*