Junior — Middle
Jak można zwiększyć rozmiar fragmentu przekazywanego do funkcji w języku programowania?
sobes.tech AI
Odpowiedź od AI
W języku Go, zakres (slice) to struktura zawierająca wskaźnik na tablicę, długość i pojemność. Jeśli chcesz zwiększyć rozmiar zakresu przekazywanego do funkcji, możesz zrobić następująco:
- Przekazać zakres jako wartość, ale wewnątrz funkcji utworzyć nowy zakres z powiększoną długością lub pojemnością za pomocą funkcji
append. - Jeśli chcesz zmienić sam zakres (np. zwiększyć długość) i aby zmiany były widoczne na zewnątrz, możesz przekazać wskaźnik na zakres (
*[]T), wtedy wewnątrz funkcji możesz przypisać nowy zakres.
Przykład powiększania zakresu wewnątrz funkcji z zwróceniem nowego zakresu:
func extendSlice(s []int, n int) []int {
// Dodaj n zerowych elementów
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]
}
Jeśli funkcja ma zmodyfikować zakres bez zwracania, można użyć wskaźnika:
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]
}
W ten sposób, aby zwiększyć rozmiar zakresu w funkcji, należy albo zwrócić nowy zakres, albo przekazać wskaźnik na zakres.