Sobes.tech
Junior — Middle

Ar galima pridėti elementų prie funkcijai perduoto sluoksnio?

sobes.tech AI

Atsakymas iš AI

Taip, galima pridėti elementų prie funkcijai perduoto skaidinio (slice), tačiau svarbu suprasti, kad Go kalboje skaidinys (slice) yra struktūra, kuri turi rodyklę į masyvą, ilgį ir talpą.

Jei funkcijoje naudojate append ir rezultatą priskiriate vietinei kintamajai, pakeitimai nepaveiks pirminio skaidinio už funkcijos ribų, nebent grąžinsite naują skaidinį arba perduosite rodyklę į skaidinį.

Pavyzdys:

func addElement(s []int) []int {
    s = append(s, 42) // pridėti elementą
    return s
}

func main() {
    s := []int{1, 2, 3}
    s = addElement(s) // reikia priskirti iš naujo
    fmt.Println(s) // [1 2 3 42]
}

Jei norite pakeisti skaidinį funkcijos viduje be grąžinimo, galite perduoti rodyklę:

func addElementPtr(s *[]int) {
    *s = append(*s, 42)
}

func main() {
    s := []int{1, 2, 3}
    addElementPtr(&s)
    fmt.Println(s) // [1 2 3 42]
}