package main
import "fmt"
/*
 * Go maps are just what they sound like.
 */
func main() {
        // A Go map needs to be explicitly allocated.  Specify key and 
        // content types.
        m := make(map[string]int)
        m["foo"] = 1
        m["bar"] = 20
        m["nimrod"] = 5
        m["smith"] = 18
        m["thud"] = 7
        fmt.Printf("%s => %d, %s => %d, %s => %d\n", "bar", m["bar"],
                "smith", m["smith"], "jones", m["jones"])
        fmt.Println()
        for key, elt := range m {
                fmt.Printf("%s => %d\n", key, elt)
        }
        fmt.Println()
        delete(m,"nimrod")
        for key, elt := range m {
                fmt.Printf("%s => %d\n", key, elt)
        }
        // There is a sort of map literal.  Note the comma at the end.
        m = map[string]int {
                "bill" : 18, "alice" : 20, "boris" : 3, "fannie" : 18,
                "mike" : 34, "tim" : 3,
        }
        fmt.Println()
        for key, elt := range m {
                fmt.Printf("%s => %d\n", key, elt)
        }
}