Sobes.tech
Junior — Middle

Budú zmeny vykonané v odoslanej zozname zobrazené globálne v tomto profile?

sobes.tech AI

Odpoveď od AI

V jazyku Go, ak odovzdáte rez (slice) do funkcie a zmeníte jeho prvky, tieto zmeny budú viditeľné mimo funkcie, pretože rez obsahuje ukazovateľ na dáta v poli.

Avšak, ak vo vnútri funkcie zmeníte samotný rez (napríklad mu priradíte nový rez), nebude to mať vplyv na pôvodný rez mimo funkcie.

Príklad:

func modifySlice(s []int) {
    s[0] = 100 // zmení prvok pôvodného rezu
    s = append(s, 200) // zmení lokálnu kópiu rezu, neovplyvní ten vonkajší
}

func main() {
    slice := []int{1, 2, 3}
    modifySlice(slice)
    fmt.Println(slice) // Vytlačí [100 2 3]
}

Teda, zmeny na prvkoch rezu sa odrážajú globálne, ale zmena samotného rezu — nie.