我正在嘗試學習接口,以及如何編寫單個函數以使用不同類型。我想出了這個例子,我在int
片或float32
片中找到最大值。代碼如下。我不斷收到這個錯誤「t不是一種類型」。有人能告訴我什麼是錯的,我可能會如何解決它?Golang反映包「不是一個類型」
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}))
'v.Type()'是描述類型,而不是一個類型,因此'第(t)的一個對象'沒有定義。 –