Sobes.tech
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]
}