func addvar(var1 interface{}) interface{} {
// type1 := reflect.TypeOf(var1)
var varsum interface{}
switch var1.(type) {
case []string:
varsum = addstr(var1.([]string))
case []int:
varsum = addnumber(var1.([]int))
case []float64:
varsum = addfloat64(var1.([]float64))
}
return varsum
}
func main() {
// addvar 侧重于 功能相同,但是数据类型不同
strlist1 := []string{"1", "1", "2"}
fmt.Println(addvar(strlist1))
intlist1 := []int{3, 4, 5, 6}
fmt.Println(addvar(intlist1))
float64list1 := []float64{1.1, 2.3, 4.4, 5}
fmt.Println(addvar(float64list1))
// dealint 侧重于 函数具有相同的类型,但是功能不同
addsum1 := dealint(intlist1, addnumber)
subsum1 := dealint(intlist1, subnumber)
fmt.Println(addsum1)
fmt.Println(subsum1)
}