Junior — Middle
Jak lze zvětšit velikost řezu předávaného funkci v programovacím jazyce?
sobes.tech AI
Odpověď od AI
V jazyce Go je řez (slice) struktura, která obsahuje ukazatel na pole, délku a kapacitu. Pokud potřebujete zvětšit velikost řezů předaných do funkce, můžete postupovat následovně:
- Předat řez hodnotou, ale uvnitř funkce vytvořit nový řez s větší délkou nebo kapacitou pomocí funkce
append. - Pokud chcete změnit samotný řez (například zvětšit jeho délku) a aby byly změny viditelné i mimo funkci, můžete předat ukazatel na řez (
*[]T), pak uvnitř funkce můžete řez předefinovat.
Příklad zvětšení řezů uvnitř funkce s vrácením nového řezů:
func extendSlice(s []int, n int) []int {
// Přidat n nulových prvků
s = append(s, make([]int, n)...)
return s
}
func main() {
s := []int{1, 2, 3}
s = extendSlice(s, 2)
fmt.Println(s) // [1 2 3 0 0]
}
Pokud funkce má změnit řez bez vrácení, lze použít ukazatel:
func extendSlicePtr(s *[]int, n int) {
*s = append(*s, make([]int, n)...)
}
func main() {
s := []int{1, 2, 3}
extendSlicePtr(&s, 2)
fmt.Println(s) // [1 2 3 0 0]
}
Tímto způsobem, pokud chcete zvětšit velikost řezů uvnitř funkce, musíte buď vrátit nový řez, nebo předat ukazatel na řez.