go没有泛型一直以来都为人诟病,好在go的泛型已经接近完成了 最快在1.18版本就要正式出来了(有点小激动),那么在泛型没出来前要怎么写通用的方法呢,相信大家都经常碰到过明明需要的功能都差不多 就是因为里面的类型是string 和 int不同,硬是要写两个方法,感觉这样非常不优雅且方便,于是研究了下通过反射可以实现类似泛型的功能(当然指常见的) 话不多说上代码
// 数组转字符串 (泛型出来前准备) ps:[1,2,3,4] => 1,2,3,4
func ArrayToString(arr interface{}) string {
// 反射获取数据
array := reflect.ValueOf(arr)
str := ""
for i:=0;i<array.Len();i++ {
if str == "" {
str += array.Index(i).String()
} else {
str += ","+array.Index(i).String()
}
}
return str
}
上面的方法只是简单的实现了一下 实际上还需要加很多断言判断的,不过也可以给我们添加一种思路,最后希望泛型早日出来,不过不得不吐槽下go的泛型符号,太没辨识度了