Sobes.tech
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.