Junior — Middle
Kako povećati veličinu odseka koji se prosleđuje funkciji u programskom jeziku?
sobes.tech АИ
Одговор од АИ
U Go jeziku, isečak (slice) je struktura koja sadrži pokazivač na niz, dužinu i kapacitet. Ako želite da povećate veličinu isečka koji se prosleđuje funkciji, možete učiniti sledeće:
- Prosledite isečak po vrednosti, ali unutar funkcije kreirajte novi isečak sa povećanom dužinom ili kapacitetom pomoću funkcije
append. - Ako želite da izmenite sam isečak (npr. da povećate njegovu dužinu) i da promene budu vidljive spolja, možete proslediti pokazivač na isečak (
*[]T), tada unutar funkcije možete prepisati isečak.
Primer povećanja isečka unutar funkcije sa vraćanjem novog isečka:
func extendSlice(s []int, n int) []int {
// Dodavanje n nultih elemenata
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]
}
Ako funkcija treba da izmeni isečak bez vraćanja, možete koristiti pokazivač:
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]
}
Na ovaj način, da biste povećali veličinu isečka unutar funkcije, morate ili vratiti novi isečak ili proslediti pokazivač na isečak.