Junior — Middle
Jaká je hodnota odkazu nebo ukazatele uvnitř struktury, která používá slice v programovacím jazyce?
sobes.tech AI
Odpověď od AI
V jazyce Go je řez (slice) struktura, která obsahuje ukazatel na pole, délku a kapacitu. Když je řez použit uvnitř struktury, samotný řez je uložen jako hodnota, ale uvnitř něj je ukazatel na data pole.
To znamená, že při kopírování struktury je kopírován i řez, ale oba řezové ukazují na stejný datový pole. Změny provedené přes jeden řez se projeví v druhém, pokud oba ukazují na stejný pole.
Příklad:
package main
import "fmt"
type MyStruct struct {
Data []int
}
func main() {
s1 := MyStruct{Data: []int{1, 2, 3}}
s2 := s1 // kopírování struktury
s2.Data[0] = 100
fmt.Println(s1.Data) // Vytiskne [100 2 3], protože Data ukazuje na stejný pole
}
Tedy odkaz uvnitř řezové struktury ukazuje na společné pole, což je důležité vzít v úvahu při kopírování a změnách dat.