Sobes.tech
Junior — Middle

Ce valoare are un link sau un pointer în interiorul unei structuri care utilizează un slice într-un limbaj de programare?

sobes.tech AI

Răspuns de la AI

În Go, un slice este o structură care conține un pointer către un array, o lungime și o capacitate. Când un slice este utilizat în interiorul unei structuri, slice-ul în sine este stocat ca o valoare, dar în interiorul său există un pointer către datele array-ului.

Aceasta înseamnă că, la copierea structurii, se copiază și slice-ul, dar ambele slice-uri vor indica același array de date. Modificările făcute printr-un slice se vor reflecta în celălalt dacă ambele indică același array.

Exemplu:

package main
import "fmt"

type MyStruct struct {
    Data []int
}

func main() {
    s1 := MyStruct{Data: []int{1, 2, 3}}
    s2 := s1 // copierea structurii
    s2.Data[0] = 100
    fmt.Println(s1.Data) // Va afișa [100 2 3], deoarece Data indică același array
}

Prin urmare, referința din interiorul slice-ului din structură indică către un array comun, ceea ce este important de avut în vedere la copierea și modificarea datelor.