Slide 1

Slide 1 text

gophers := [4]string{"blue", "pink", "purple", "blue"}

Slide 2

Slide 2 text

Arrays are fixed-length planets := [8]string{
 "Mercury",
 "Venus",
 "Earth",
 "Mars",
 "Jupiter",
 "Saturn",
 "Uranus",
 "Neptune",
 } 0 1 2 3 4 5 6 7

Slide 3

Slide 3 text

Arrays are values planetBackup := planets
 
 // make way for an interstellar bypass
 planets[2] = “" fmt.Println(planets) // [Mercury Venus Mars Jupiter Saturn Uranus Neptune]
 
 fmt.Println(planetBackup) // [Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune]

Slide 4

Slide 4 text

Slicing makes a window terrestrial := planets[0:4]
 gasGiants := planets[4:6]
 iceGiants := planets[6:8] 0 1 2 3 4 5 6 7 terrestrial gasGiants iceGiants

Slide 5

Slide 5 text

Half-open range planets[2:3] // [Earth] < 3 • starts at index 2 • excludes index 3

Slide 6

Slide 6 text

Defaults terrestrial := planets[:4]
 gasGiants := planets[4:6]
 iceGiants := planets[6:] allPlanets := planets[:]

Slide 7

Slide 7 text

Making a slice // allPlanets := planets[:] planets := []string{
 "Mercury",
 "Venus",
 "Earth",
 "Mars",
 "Jupiter",
 "Saturn",
 "Uranus",
 "Neptune",
 }

Slide 8

Slide 8 text

Append to slices planets = append(planets, "Pluto") 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 fmt.Println(len(planets), cap(planets)) // 9 16

Slide 9

Slide 9 text

Append again planets = append(planets, "Eris", "Sedna")
 
 fmt.Println(len(planets), cap(planets)) // 11 16

Slide 10

Slide 10 text

http://blog.golang.org/go-slices-usage-and-internals https://github.com/golang/go/wiki/SliceTricks More reading