Junior — Middle
Vai ir iespējams pievienot elementus funkcijas nodotajam sēklam?
sobes.tech AI
Atbilde no AI
Jā, ir iespējams pievienot elementus funkcijai nodotajam skaidam (slice), bet ir svarīgi saprast, ka Go valodā skaids (slice) ir struktūra, kas satur norādītāju uz masīvu, garumu un ietilpību.
Ja funkcijā izmantojat append un rezultātu piešķirat vietējai mainīgajai, izmaiņas neietekmēs oriģinālo skaidu ārpus funkcijas, ja vien neatgriezīsiet jaunu skaidu vai nepārsūtīsiet norādītāju uz skaidu.
Piemērs:
func addElement(s []int) []int {
s = append(s, 42) // pievienot elementu
return s
}
func main() {
s := []int{1, 2, 3}
s = addElement(s) // nepieciešams pārrakstīt
fmt.Println(s) // [1 2 3 42]
}
Ja vēlaties mainīt skaidu funkcijas iekšienē bez atgriešanas, var nodot norādi:
func addElementPtr(s *[]int) {
*s = append(*s, 42)
}
func main() {
s := []int{1, 2, 3}
addElementPtr(&s)
fmt.Println(s) // [1 2 3 42]
}