I just read that map[Type]interface{} specifies a map of keys of type Type with values any i.e. interface{}.
Isn't this almost the same as defining a structure i.e. type Name struct{ key1; value1, ...., keyn: valuen}?
What is the difference between those two types of mappings?
I read https://www.digitalocean.com/community/tutorials/how-to-use-json-in-go but I still don't get the difference.
Or is the difference that with map[type] interface{} we define in a more general way?
And with struct we define each key value pair?
And both of them are just ways to define objects which consist of key value pairs?
Structs and maps are different data structures. They have many differences. Here are just a few:
A struct has a fixed number of fields that are declared once and can't change.
point := struct{ x, y float64 }{
x: 1.0,
y: 1.0,
}
A map can grow or shrink at runtime.
vector := map[string]float64{
"x": 2.0,
"y": 2.0,
}
vector["z"] = 2.0
You can loop over map entries.
for key, val := range vector {
fmt.Println(key, val)
}
Structs don't support iteration (unless you use reflection).
Struct fields can have tags (additional attributes):
type User struct {
Name string `json:"name"`
Password string `json:"password"`
}
Maps don't have this feature.