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