max{max=v}elseifv"/> max{max=v}elseifv">
Heim > Artikel > Backend-Entwicklung > Ungültige Operation: v > max (Typparameter T und > sind nicht vergleichbar)
Kompilieren Sie mit Ihrem Code: golang.org/x/exp/ 中定义constraints
包,请参阅 constraints.ordered
package main
import (
"fmt"
)
func findMinMax[T comparable](arr []T) (min, max T) {
for _, v := range arr {
if v > max {
max = v
} else if v < min {
min = v
}
}
return min, max
}
func main() {
arr := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Println(findMinMax(arr))
}
Probieren Sie es auf dem
aus.
Es liefert falsche Ergebnisse, weil Sie mit einem Nullwert beginnen bleibt der Nullwert.
Eine einfache Lösung besteht darin, mit dem ersten Wert zu initialisieren, wenn das übergebene Slice nicht leer ist: min
和 max
,并且如果传递的切片中的所有值都大于或小于零值,则 min
或 max
import ( "fmt" "golang.org/x/exp/constraints" ) func findminmax[t constraints.ordered](arr []t) (min, max t) { for _, v := range arr { if v > max { max = v } else if v < min { min = v } } return min, max }Dies wird ausgegeben (versuchen Sie es auf
Go Playgroundmin
和 max
):
func findminmax[t constraints.ordered](arr []t) (min, max t) { if len(arr) > 0 { min, max = arr[0], arr[0] } for _, v := range arr { if v > max { max = v } else if v < min { min = v } } return min, max }
Beachten Sie, dass Sie bei Verwendung von Gleitkommatypen -Werte explizit behandeln müssen, da deren Reihenfolge bei anderen Gleitkommazahlen nicht angegeben ist.
Das obige ist der detaillierte Inhalt vonUngültige Operation: v > max (Typparameter T und > sind nicht vergleichbar). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!