How do I use struct as an alternative to maps?

go

Solution

type element struct {
    name  string
    state string
}

func main() {
    elements := map[string]element{
        "H":  {"Hydrogen", "gas"},
        "He": {"Helium", "gas"},
        "Li": {"Lithium", "solid"},
        "Be": {"Beryllium", "solid"},
        "B":  {"Boron", "solid"},
        "C":  {"Carbon", "solid"},
        "N":  {"Nitrogen", "gas"},
        "O":  {"Oxygen", "gas"},
        "F":  {"Fluorine", "gas"},
        "Ne": {"Neon", "gas"},
    }
    if el, ok := elements["Li"]; ok {
        fmt.Println(el.name, el.state)
    }
}

http://play.golang.org/p/vIbA5Qs7SD

Problem

I read "An introduction to programming in GO" by Caleb Doxsey. In chapter 6 he had the following example: ``` package main import "fmt" func main() { elements := map[string]map[string]string{ "H": map[string]string{ "name": "Hydrogen", "state": "gas", }, "He": map[string]string{ "name": "Helium", "state": "gas", }, "Li": map[string]string{ "name": "Lithium", "state": "solid", }, "Be": map[string]string{ "name": "Beryllium", "state": "solid", }, "B": map[string]string{ "name": "Boron", "state": "solid", }, "C": map[string]string{ "name": "Carbon", "state": "solid", }, "N": map[string]string{ "name": "Nitrogen", "state": "gas", }, "O": map[string]string{ "name": "Oxygen", "state": "gas", }, "F": map[string]string{ "name": "Fluorine", "state": "gas", }, "Ne": map[string]string{ "name": "Neon", "state": "gas", }, } if el, ok := elements["Li"]; ok { fmt.Println(el["name"], el["state"]) } } ``` He commented the example that "although maps are often used like this, in chapter 9 we will see a better way to store structured information." Chapter 9 is about Structs and Interfaces. What does a better way to store structured information with structs and interfaces look like for the example above? Thank you in advance.

Original source