Senior
Analizirajte sledeći deo koda u Go jeziku i objasnite šta će program ispisati i zašto: ```go func main() { type User struct { Name string } m := map[string]User{ "a": {Name: "Alice"}, } u := m["a"] u.Name = "Bob" fmt.Println(m["a"].Name) } ```
sobes.tech АИ
Одговор од АИ
Program će prikazati:
Alice
Objašnjenje:
U Go-u, kada radite sa mapama, ako je vrednost struktura (ne pokazivač), tada prilikom pristupa elementu m["a"], dobijate kopiju strukture, a ne referencu na original.
U kodu:
u := m["a"] // u je kopija strukture User
u.Name = "Bob" // polje Name se menja u kopiji u, a ne u originalu u map
Zbog toga, promena u.Name ne utiče na vrednost u mapi.
Prilikom ispisivanja fmt.Println(m["a"].Name), dobijamo originalnu vrednost polja Name, koja je "Alice".
Ako želimo da promenimo vrednost u mapi, potrebno je koristiti pokazivače u mapama ili da ponovo dodelimo izmenjenu strukturu:
u := m["a"]
u.Name = "Bob"
m["a"] = u
Tada će izlaz biti "Bob".