Junior — Middle
Kas on võimalik lisada funktsioonile antud slaidile elemente?
sobes.tech AI
Vastus AI-lt
Jah, on võimalik lisada elemente funktsioonile antud vahele (slice), kuid oluline on mõista, et Go-s on vahe (slice) struktuur, mis sisaldab viidet massiivile, pikkust ja mahtu.
Kui kasutate funktsioonis append ja määrate tulemuse kohaliku muutujale, siis muudatused ei mõjuta algset vahet väljaspool funktsiooni, välja arvatud juhul, kui tagastate uue vahe või edastate viite vahele.
Näide:
func addElement(s []int) []int {
s = append(s, 42) // lisa element
return s
}
func main() {
s := []int{1, 2, 3}
s = addElement(s) // tuleb uuesti määrata
fmt.Println(s) // [1 2 3 42]
}
Kui soovite muuta vahet funktsiooni sees ilma tagastamata, saate edastada viite:
func addElementPtr(s *[]int) {
*s = append(*s, 42)
}
func main() {
s := []int{1, 2, 3}
addElementPtr(&s)
fmt.Println(s) // [1 2 3 42]
}