Map Immutability

Explain why the code below cannot compile and fix it.

  1. package main
  2. type S struct {
  3. name string
  4. }
  5. func main() {
  6. m := map[string]S{"x": S{"one"}}
  7. m["x"].name = "two"
  8. }

Answer

  1. package main
  2. type S struct {
  3. name string
  4. }
  5. func main() {
  6. m := map[string]*S{"x": &S{"one"}}
  7. m["x"].name = "two"
  8. }