Sobes.tech
Senior

Môžeme na piatej riadku, kde sa vykonáva fmt.Println(v), získať prístup k jednotke (prvku pridanému pomocou append vnútri fill) a ju vypísať?

sobes.tech AI

Odpoveď od AI

V jazyku Go, ak vo vnútri funkcie fill pridáte prvok do rezu pomocou append, tento prvok bude v reze po volaní fill, ak je rez odovzdaný odkazom alebo vrátený.

Príklad:

package main

import "fmt"

func fill(s []int) []int {
    s = append(s, 1) // pridanie prvku
    return s
}

func main() {
    var v []int
    v = fill(v)
    fmt.Println(v) // tu sa vypíše [1]
}

Ak je rez odovzdaný do fill hodnotou a nie je vrátený, zmeny sa neuložia. Preto, aby ste mali prístup k pridanému prvku na piatom riadku, musíte buď vrátiť rez z fill, alebo odovzdať ukazovateľ na rez.

Týmto spôsobom môžete na piatom riadku, fmt.Println(v), zobraziť pridanú jednotku, ak správne zorganizujete odovzdanie a vrátenie rezu.