我正在尝试学习接口以及如何编写一个函数来处理不同的类型。我想出了这个例子,我在一个切片int或一个切片中找到最大值float32。代码如下。我不断收到此错误“t 不是类型”。有人可以告诉我出了什么问题以及我如何解决它?
package main
import "fmt"
import "reflect"
var _ = fmt.Println
var _ = reflect.TypeOf
func maxer(s interface{}) interface{} {
v := reflect.ValueOf(s)
t := v.Type()
maxval := s.(t)[0]
for _, v := range s.(t)[1:] {
if v > maxval {
maxval = v
}
}
return maxval
}
func main() {
fmt.Println(maxer([]int{1, 2, 3, 4}))
fmt.Println(maxer([]float32{1.1, 2.1, 3.14, 0.1, 2.4}))
Run Code Online (Sandbox Code Playgroud)