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.