请先参看此文Go不能简单的将slice转换为接口的slice
package main
import (
"fmt"
)
type AnyKind interface{}
func main() {
fmt.Println(findMyMax([]AnyKind{3, 7, 1, 3, 56, 8}))
fmt.Println(findMyMax([]AnyKind{1.2, 3.1, 16.7, 12.1}))
}
func findMyMax(ak []AnyKind) AnyKind {
var akTemp AnyKind
for _, v := range ak {
switch v.(type) {
case int:
if akTemp == nil || v.(int) > akTemp.(int) {
akTemp = v
}
case float64:
if akTemp == nil || v.(float64) > akTemp.(float64) {
akTemp = v
}
default:
fmt.Println("type miss")
}
}
return akTemp
}
使用这种方式实际上就是slice的传参,通过定义定义接口切片避免在参数传递是发生类型转换!
感觉go也是个很纠结的东西~~