Ce face math.Max
math.Max(x, y) returnează valoarea mai mare, iar math.Min(x, y) valoarea mai mică. Ambele lucrează doar cu două valori float64.
Din Go 1.21 există funcțiile predefinite max și min, care primesc oricâte argumente de orice tip ordonat (int, float64, string): max(3, 9, 5). În cod nou sunt de obicei alegerea mai simplă. Pentru minimul sau maximul unui slice există slices.Max și slices.Min.
Cazuri speciale: dacă un argument este NaN, rezultatul este NaN. Max(+0, -0) este +0, iar Min(+0, -0) este -0.
Parametri
| Parametru | Descriere |
|---|---|
x, y |
Cele două numere comparate. |
Ce returnează
Numărul mai mare (Max) sau mai mic (Min).
Exemple
Exemplul 1: math.Max, math.Min și max, min predefinite
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Max(3.5, 7.2))
fmt.Println(math.Min(3.5, 7.2))
fmt.Println(max(4, 9, 2), min(4, 9, 2)) // funcțiile predefinite, Go 1.21+
fmt.Println(max("Iași", "Cluj"))
fmt.Println(math.Max(1, math.NaN()))
}
Rezultat
7.2
3.5
9 2
Iași
NaN
Exemplul 2: Limitarea unei valori într-un interval
Combinația Min(Max(x, jos), sus) ține valoarea între două limite, de exemplu o notă între 1 și 10.
package main
import (
"fmt"
"math"
)
func limiteaza(x, jos, sus float64) float64 {
return math.Min(math.Max(x, jos), sus)
}
func main() {
for _, nota := range []float64{11.5, 7.25, -2} {
fmt.Println(nota, "->", limiteaza(nota, 1, 10))
}
}
Rezultat
11.5 -> 10
7.25 -> 7.25
-2 -> 1
Greșeli frecvente
- Dai
intlamath.Max: nu compilează. Pentru întregi foloseștemax/minpredefinite (Go 1.21+). - Cauți maximul unui slice cu o buclă și
math.Max:slices.Max(s)face asta direct.
Comenzi înrudite
slices.Max: Returnează cel mai mare (Max) sau cel mai mic (Min) element dintr-un slice; variantele Func folosesc o comparație proprie.math.Dim: math.Dim dă diferența pozitivă max(x-y, 0); math.Copysign copiază semnul; math.Signbit spune dacă un număr are semn minus.math.Inf: Valorile speciale ale lui float64: infinit (Inf, IsInf) și „nu este un număr” (NaN, IsNaN).cmp.Compare: Compare returnează -1, 0 sau +1 după cum x este mai mic, egal sau mai mare decât y; Less spune dacă x < y.