From 0f5553f15dfdf195453d70911aa9f04062e0a903 Mon Sep 17 00:00:00 2001
From: Mark McGranaghan <mmcgrana@gmail.com>
Date: Sun, 16 Sep 2012 12:54:15 -0700
Subject: [PATCH] more

---
 17-maps.go      | 18 ++++++++++++++++++
 18-guard.go     | 16 ++++++++++++++++
 19-nesting.go   | 29 +++++++++++++++++++++++++++++
 20-functions.go | 18 ++++++++++++++++++
 4 files changed, 81 insertions(+)
 create mode 100644 17-maps.go
 create mode 100644 18-guard.go
 create mode 100644 19-nesting.go
 create mode 100644 20-functions.go

diff --git a/17-maps.go b/17-maps.go
new file mode 100644
index 0000000..56b8b9c
--- /dev/null
+++ b/17-maps.go
@@ -0,0 +1,18 @@
+package main
+
+import "fmt"
+
+func main() {
+	x := make(map[string]int)
+	x["this"] = 7
+	x["that"] = 13
+	fmt.Println(x)
+	fmt.Println(x["this"])
+	fmt.Println(x["missing"])
+	fmt.Println(len(x))
+	delete(x, "that")
+	fmt.Println(x["that"])
+	fmt.Println(len(x))
+	_, present := x["that"]
+	fmt.Println(present)
+}
diff --git a/18-guard.go b/18-guard.go
new file mode 100644
index 0000000..ab39ecb
--- /dev/null
+++ b/18-guard.go
@@ -0,0 +1,16 @@
+package main
+
+import "fmt"
+
+func main() {
+	x := make(map[string]string)
+	x["here"] = "yep"
+	if name, ok := x["not here"]; ok {    
+	    fmt.Println(name)
+	} else {
+		fmt.Println("missing")
+	}
+	if name, ok := x["here"]; ok {    
+	    fmt.Println(name)
+	}
+}
diff --git a/19-nesting.go b/19-nesting.go
new file mode 100644
index 0000000..952d351
--- /dev/null
+++ b/19-nesting.go
@@ -0,0 +1,29 @@
+package main
+
+import "fmt"
+
+func main() {
+    elements := map[string]map[string]string{
+        "He": map[string]string{
+            "name":"Helium", 
+            "state":"gas",
+        },
+        "Li": map[string]string{
+            "name":"Lithium", 
+            "state":"solid",
+        },
+        "Be": map[string]string{
+            "name":"Beryllium", 
+            "state":"solid",
+        },
+    }
+
+	fmt.Println(elements)
+	fmt.Println()
+
+	li := elements["Li"]
+	fmt.Println(li)
+	fmt.Println()
+
+	fmt.Println(li["name"], li["state"])
+}
diff --git a/20-functions.go b/20-functions.go
new file mode 100644
index 0000000..a80bfc3
--- /dev/null
+++ b/20-functions.go
@@ -0,0 +1,18 @@
+package main
+
+import "fmt"
+
+func avg(vals []float64) float64 {
+	total := 0.0
+	for _, val := range vals {
+		total += val
+	}
+	return total / float64(len(vals))
+}
+
+func main() {
+	input := []float64{98,93,77,82,83}
+	fmt.Println(input)
+	output := avg(input)
+	fmt.Println(output)
+}