Junior — Middle
Milyen értéke van egy hivatkozásnak vagy mutatónak egy olyan szerkezeten belül, amely egy szeletet használ egy programozási nyelvben?
sobes.tech MI
Válasz az MI-től
Go nyelvben a szelet (slice) egy olyan struktúra, amely egy mutatót tartalmaz egy tömbre, valamint hosszúságot és kapacitást. Amikor egy szeletet egy struktúrában használunk, maga a szelet értékként van tárolva, de belül van egy mutató a tömb adataira.
Ez azt jelenti, hogy a struktúra másolásakor a szelet is másolódik, de mindkét szelet ugyanarra a tömbre mutat. A változtatások az egyik szeletben megjelennek a másikban is, ha ugyanarra a tömbre mutatnak.
Példa:
package main
import "fmt"
type MyStruct struct {
Data []int
}
func main() {
s1 := MyStruct{Data: []int{1, 2, 3}}
s2 := s1 // struktúra másolása
s2.Data[0] = 100
fmt.Println(s1.Data) // [100 2 3] lesz, mivel a Data ugyanarra a tömbre mutat
}
Ezért a struktúrában lévő szelet referencia egy közös tömbre mutat, amit figyelembe kell venni a másolás és módosítás során.