Sobes.tech
Junior — Middle

Aká je hodnota odkazu alebo ukazovateľa vnútri štruktúry, ktorá používa slice v programovacom jazyku?

sobes.tech AI

Odpoveď od AI

V jazyku Go je slice štruktúra, ktorá obsahuje ukazovateľ na pole, dĺžku a kapacitu. Keď sa slice používa vnútri štruktúry, samotný slice sa ukladá ako hodnota, ale vo vnútri neho je ukazovateľ na dáta poľa.

To znamená, že pri kopírovaní štruktúry sa kopíruje aj slice, ale oba slice ukazujú na ten istý dátový poľ. Zmeny cez jeden slice sa prejavia v druhom, ak oba ukazujú na ten istý poľ.

Príklad:

package main
import "fmt"

type MyStruct struct {
    Data []int
}

func main() {
    s1 := MyStruct{Data: []int{1, 2, 3}}
    s2 := s1 // kopírovanie štruktúry
    s2.Data[0] = 100
    fmt.Println(s1.Data) // Vypíše [100 2 3], pretože Data ukazuje na ten istý poľ
}

Týmto spôsobom ukazovateľ vnútri slice v štruktúre ukazuje na spoločný poľ, čo je dôležité vziať do úvahy pri kopírovaní a zmene dát.