Junior — Middle
Ako zväčšiť veľkosť rezu, ktorý sa odovzdáva funkcii v programovacom jazyku?
sobes.tech AI
Odpoveď od AI
V jazyku Go je rez (slice) štruktúra, ktorá obsahuje ukazovateľ na pole, dĺžku a kapacitu. Ak potrebujete zväčšiť veľkosť rezu, ktorý sa odovzdáva do funkcie, môžete urobiť nasledovné:
- Odovzdať rez hodnotou, ale vo vnútri funkcie vytvoriť nový rez s väčšou dĺžkou alebo kapacitou pomocou funkcie
append. - Ak potrebujete zmeniť samotný rez (napríklad zväčšiť jeho dĺžku) a aby zmeny boli viditeľné zvonku, môžete odovzdať ukazovateľ na rez (
*[]T), tak vo vnútri funkcie môžete rez predefinovať.
Príklad zväčšenia rezu vo vnútri funkcie s vrátením nového rezu:
func extendSlice(s []int, n int) []int {
// Pridať n nulových prvkov
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]
}
Ak funkcia má zmeniť rez bez vrátenia, môžete použiť ukazovateľ:
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 spôsobom, aby ste zväčšili veľkosť rezu vo funkcii, musíte buď vrátiť nový rez alebo odovzdať ukazovateľ na rez.