Golang反映包“不是一种类型”

我正在尝试学习接口以及如何编写单个函数来处理不同类型的函数.我想出了这个例子,我在一片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}))

最佳答案 我认为在这种情况下你最终需要手动处理不同的类型. AFAIK,类型断言在编译时必须是实数类型.这是我最好的尝试:
http://play.golang.org/p/J8RdHF2MVV

点赞