Ce face min și max
min și max primesc unul sau mai multe argumente de același tip ordonat (întregi, numere reale sau texte) și returnează cel mai mic, respectiv cel mai mare. Textele se compară octet cu octet (ordine lexicografică), deci literele mari vin înaintea celor mici, iar diacriticele după alfabetul englez.
Funcțiile primesc valori separate, nu un slice: pentru un slice folosește slices.Min(s) și slices.Max(s). Dacă toate argumentele sunt constante, rezultatul este și el constant. La numere reale, dacă un argument este NaN, rezultatul este NaN.
Un caz foarte des întâlnit este limitarea unei valori într-un interval: max(minim, min(x, maxim)).
Parametri
| Parametru | Descriere |
|---|---|
x |
Primul argument (obligatoriu). |
y |
Celelalte argumente, de același tip, opționale. |
Ce returnează
Cea mai mică (min) sau cea mai mare (max) valoare.
Exemple
Exemplul 1: Numere și texte
package main
import "fmt"
func main() {
fmt.Println(min(7, 3, 9), max(7, 3, 9))
fmt.Println(min(2.5, 1.75), max(-1, 0))
fmt.Println(min("Iași", "Arad", "Cluj"), max("Iași", "Arad", "Cluj"))
const limita = max(10, 20) // constantă
fmt.Println(limita)
}
Rezultat
3 9
1.75 0
Arad Iași
20
Exemplul 2: Limitarea într-un interval
Nota este ținută între 1 și 10, oricât de greșită ar fi valoarea introdusă.
package main
import (
"fmt"
"slices"
)
func limiteaza(x, jos, sus int) int {
return max(jos, min(x, sus))
}
func main() {
for _, n := range []int{-3, 7, 15} {
fmt.Println(n, "->", limiteaza(n, 1, 10))
}
note := []int{8, 10, 6, 9}
fmt.Println("din slice:", slices.Min(note), slices.Max(note))
}
Rezultat
-3 -> 1
7 -> 7
15 -> 10
din slice: 6 10
Greșeli frecvente
min(note)cu un slice:invalid argument: note (variable of type []int) cannot be ordered. Foloseșteslices.Min.- Tipuri amestecate:
min(n, 2.5)cun intnu compilează:2.5 (untyped float constant) truncated to int. - Funcții proprii numite
min/maxîn cod vechi: ascund funcțiile predefinite din Go 1.21.
Comenzi înrudite
generics (parametri de tip): Funcții și tipuri care lucrează cu mai multe tipuri, scrise o singură dată cu parametri de tip [T constrângere].funcții variadice (...): Funcții care primesc oricâte argumente de același tip prin …T; în funcție ele sunt un slice.comparable: Constrângere predefinită pentru generics: tipurile care se pot compara cu == și != (pot fi chei de map).