Junior — Middle
Kuidas suurendada funktsioonile edastatava lõigu suurust programmeerimiskeeles?
sobes.tech AI
Vastus AI-lt
In Go, a slice is a structure that contains a pointer to an array, a length, and a capacity. If you want to increase the size of a slice passed to a function, you can do the following:
- Pass the slice by value, but create a new slice inside the function with increased length or capacity using the
appendfunction. - If you need to modify the slice itself (for example, increase its length) and have the changes visible outside, you can pass a pointer to the slice (
*[]T), then inside the function you can reassign the slice.
Example of increasing a slice inside a function with returning a new slice:
func extendSlice(s []int, n int) []int {
// Add n zero elements
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]
}
If the function should modify the slice without returning it, you can use a pointer:
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]
}
Thus, to increase the size of a slice inside a function, you need to either return a new slice or pass a pointer to the slice.