package main
import (
"fmt"
)
type doint func(arg []int) int
// 数字求差
func subnumber(arg []int) int {
sum1 := 0
for _, n := range arg {
sum1 -= n
}
return sum1
}
// 数字求和
func addnumber(arg []int) int {
sum1 := 0
for _, n := range arg {
sum1 += n
}
return sum1
}
// 数字处理, 将函数当做变量传送
func dealint(arg []int, func1 doint) int {
sum1 := func1(arg)
return sum1
}
// 字符串求和
func addstr(arg []string) string {
sum1 := ""
for _, n := range arg {
sum1 = sum1 + n
}
return sum1
}
// 64 位浮点数求和
func addfloat64(arg []float64) float64 {
sum1 := 0.0
for _, n := range arg {
sum1 = sum1 + n
}
return sum1
}
// 泛型求和, 支持浮点数, 字符串,加法
func addvar(var1 interface{
}) interface{
} {
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() {
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))
addsum1 := dealint(intlist1, addnumber)
subsum1 := dealint(intlist1, subnumber)
fmt.Println(addsum1)
fmt.Println(subsum1)
}