T-76.4115 Iteration Demo Team WiseGUI I2 Iteration 5.3.2008.
going loopy - adventures in iteration with google go
-
Upload
eleanor-mchugh -
Category
Technology
-
view
939 -
download
0
Transcript of going loopy - adventures in iteration with google go
going loopyadventures in iteration with google go
!!
@feyeleanor
Going Loopy http://slideshare.net/feyeleanor/!1
the conditional loop
Going Loopy http://slides.games-with-brains.net/!2
package mainimport "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {fmt.Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!3
package mainimport "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {fmt.Printf("%v: %v\n", i, s[i])
}}!!0: 01: 22: 43: 64: 8
Going Loopy http://slides.games-with-brains.net/!4
package mainimport "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {fmt.Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!5
package mainimport "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {fmt.Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!6
package mainimport "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {fmt.Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!7
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
!8Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
!9Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
!10Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!11
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!12
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!13
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!14
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!15
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!16
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!17
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
!18Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!19
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!20
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!21
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!22
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i := 0; i < len(s); i++ {Printf("%v: %v\n", i, s[i])
}}
Going Loopy http://slides.games-with-brains.net/!23
the infinite loop
Going Loopy http://slides.games-with-brains.net/!24
package mainimport . "fmt"!func main() {defer func() {recover()
}()s := []int{0, 2, 4, 6, 8}i := 0for {Printf("%v: %v\n", i, s[i])i++
}}
Going Loopy http://slides.games-with-brains.net/!25
package mainimport . "fmt"!func main() {defer func() {recover()
}()s := []int{0, 2, 4, 6, 8}i := 0for {Printf("%v: %v\n", i, s[i])i++
}}
Going Loopy http://slides.games-with-brains.net/!26
package mainimport . "fmt"!func main() {defer func() {recover()
}()s := []int{0, 2, 4, 6, 8}i := 0for {Printf("%v: %v\n", i, s[i])i++
}}
Going Loopy http://slides.games-with-brains.net/!27
package mainimport . "fmt"!func main() {defer func() {recover()
}()s := []int{0, 2, 4, 6, 8}i := 0for {Printf("%v: %v\n", i, s[i])i++
}}
Going Loopy http://slides.games-with-brains.net/!28
package mainimport . "fmt"!func main() {defer func() {recover()
}()s := []int{0, 2, 4, 6, 8}i := 0for {Printf("%v: %v\n", i, s[i])i++
}}
Going Loopy http://slides.games-with-brains.net/!29
package mainimport . "fmt"!func main() {defer func() {recover()
}()s := []int{0, 2, 4, 6, 8}i := 0for {Printf("%v: %v\n", i, s[i])i++
}}
Going Loopy http://slides.games-with-brains.net/!30
package mainimport . "fmt"!func main() {defer func() {recover()
}()s := []int{0, 2, 4, 6, 8}i := 0for i := 0; ; i++ {Printf("%v: %v\n", i, s[i])i++
}}
Going Loopy http://slides.games-with-brains.net/!31
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i, v := range s {Printf("%v: %v\n", i, v)
}}
Going Loopy http://slides.games-with-brains.net/!33
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i, v := range s {Printf("%v: %v\n", i, v)
}}
Going Loopy http://slides.games-with-brains.net/!34
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i, v := range s {Printf("%v: %v\n", i, v)
}}
Going Loopy http://slides.games-with-brains.net/!35
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i, v := range s {Printf("%v: %v\n", i, v)
}}
Going Loopy http://slides.games-with-brains.net/!36
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i, v := range s {Printf("%v: %v\n", i, v)
}}
Going Loopy http://slides.games-with-brains.net/!37
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}for i, v := range s {Printf("%v: %v\n", i, v)
}}
Going Loopy http://slides.games-with-brains.net/!38
a functional interlude
!39Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s []int) {for i, v := range s {Printf("%v: %v\n", i, v)
}}
!40Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s []int) {for i, v := range s {Printf("%v: %v\n", i, v)
}}
!41Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s []int) {for i, v := range s {Printf("%v: %v\n", i, v)
}}
!42Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s []int) {for i, v := range s {Printf("%v: %v\n", i, v)
}}
!43Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {print_slice(0, 2, 4, 6, 8)
}!func print_slice(s ...int) {for i, v := range s {Printf("%v: %v\n", i, v)
}}
!44Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {print_slice(0, 2, 4, 6, 8)
}!func print_slice(s ...int) {for i, v := range s {Printf("%v: %v\n", i, v)
}}
!45Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {print_slice(0, 2, 4, 6, 8)
}!func print_slice(s ...int) {for i, v := range s {Printf("%v: %v\n", i, v)
}}
!46Going Loopy http://slides.games-with-brains.net/
asserting type
Going Loopy http://slides.games-with-brains.net/!47
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {for i, v := range s.([]int) {Printf("%v: %v\n", i, v)
}}
Going Loopy http://slides.games-with-brains.net/!48
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {for i, v := range s.([]int) {Printf("%v: %v\n", i, v)
}}
Going Loopy http://slides.games-with-brains.net/!49
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {for i, v := range s.([]int) {Printf("%v: %v\n", i, v)
}}
Going Loopy http://slides.games-with-brains.net/!50
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {if s, ok := s.([]int); ok {for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
Going Loopy http://slides.games-with-brains.net/!51
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {if s, ok := s.([]int); ok {for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
Going Loopy http://slides.games-with-brains.net/!52
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {if s, ok := s.([]int); ok {for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
Going Loopy http://slides.games-with-brains.net/!53
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {if s, ok := s.([]int); ok {for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
Going Loopy http://slides.games-with-brains.net/!54
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {if s, ok := s.([]int); ok {for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
Going Loopy http://slides.games-with-brains.net/!55
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {if s, ok := s.([]int); ok {for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
Going Loopy http://slides.games-with-brains.net/!56
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {switch s := s.(type) {case []int:for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
Going Loopy http://slides.games-with-brains.net/!57
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {switch s := s.(type) {case []int:for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
Going Loopy http://slides.games-with-brains.net/!58
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {switch s := s.(type) {case []int:for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
Going Loopy http://slides.games-with-brains.net/!59
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {switch s := s.(type) {case []int:for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
Going Loopy http://slides.games-with-brains.net/!60
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {switch s := s.(type) {case []int:for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
Going Loopy http://slides.games-with-brains.net/!61
package mainimport . "fmt"!func main() {print_slice([]int{0, 2, 4, 6, 8})
}!func print_slice(s interface{}) {switch s := s.(type) {case []int:for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
Going Loopy http://slides.games-with-brains.net/!62
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}print_slice(func(i int) int { return s[i] })
}!func print_slice(s interface{}) {switch s := s.(type) {case func(int) int:for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s(i))
}}
}
!64Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}print_slice(func(i int) int { return s[i] })
}!func print_slice(s interface{}) {switch s := s.(type) {case func(int) int:for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s(i))
}}
}
!65Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}print_slice(func(i int) int { return s[i] })
}!func print_slice(s interface{}) {switch s := s.(type) {case func(int) int:for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s(i))
}}
}
!66Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}print_slice(func(i int) int { return s[i] })
}!func print_slice(s interface{}) {switch s := s.(type) {case func(int) int:for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s(i))
}}
}
!67Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}print_slice(func(i int) int { return s[i] })
}!func print_slice(s interface{}) {switch s := s.(type) {case func(int) int:for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s(i))
}}
}
!68Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}print_slice(func(i int) int { return s[i] })
}!func print_slice(s interface{}) {switch s := s.(type) {case func(int) int:for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s(i))
}}
}
!69Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}print_slice(func(i int) int { return s[i] })
}!func print_slice(s interface{}) {switch s := s.(type) {case func(int) int:for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s(i))
}}
}
!70Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}print_slice(func(i int) int { return s[i] })
}!func print_slice(s interface{}) {switch s := s.(type) {case func(int) int:for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s(i))
}}
}
!71Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}print_slice(func(i int) int { return s[i] })
}!func print_slice(s interface{}) {switch s := s.(type) {case func(int) int:for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s(i))
}}
}
!72Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}print_slice(func(i int) int { return s[i] })
}!func print_slice(s interface{}) {switch s := s.(type) {case func(int) int:for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s(i))
}}
}
!73Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() { c := make(chan int) go func() { for _, v := range []int{0, 2, 4, 6, 8} { c <- v } close(c) }() Printf("elements: %v\n", print_channel(c))}!func print_channel(c chan int) (i int) { for v := range c { Printf("%v: %v\n", i, v) i++ } return}
!75Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() { c := make(chan int) go func() { for _, v := range []int{0, 2, 4, 6, 8} { c <- v } close(c) }() Printf("elements: %v\n", print_channel(c))}!func print_channel(c chan int) (i int) { for v := range c { Printf("%v: %v\n", i, v) i++ } return}
!76Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() { c := make(chan int, 16) go func() { for _, v := range []int{0, 2, 4, 6, 8} { c <- v } close(c) }() Printf("elements: %v\n", print_channel(c))}!func print_channel(c chan int) (i int) { for v := range c { Printf("%v: %v\n", i, v) i++ } return}
!77Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() { c := make(chan int) go func() { for _, v := range []int{0, 2, 4, 6, 8} { c <- v } close(c) }() Printf("elements: %v\n", print_channel(c))}!func print_channel(c chan int) (i int) { for v := range c { Printf("%v: %v\n", i, v) i++ } return}
!78Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() { c := make(chan int) go func() { for _, v := range []int{0, 2, 4, 6, 8} { c <- v } close(c) }() Printf("elements: %v\n", print_channel(c))}!func print_channel(c chan int) (i int) { for v := range c { Printf("%v: %v\n", i, v) i++ } return}
!79Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() { c := make(chan int) go func() { for _, v := range []int{0, 2, 4, 6, 8} { c <- v } close(c) }() Printf("elements: %v\n", print_channel(c))}!func print_channel(c chan int) (i int) { for v := range c { Printf("%v: %v\n", i, v) i++ } return}
!80Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() { c := make(chan int) go func() { for _, v := range []int{0, 2, 4, 6, 8} { c <- v } close(c) }() Printf("elements: %v\n", print_channel(c))}!func print_channel(c chan int) (i int) { for v := range c { Printf("%v: %v\n", i, v) i++ } return}
!81Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() { c := make(chan int) go func() { for _, v := range []int{0, 2, 4, 6, 8} { c <- v } close(c) }() Printf("elements: %v\n", print_channel(c))}!func print_channel(c chan int) (i int) { for v := range c { Printf("%v: %v\n", i, v) i++ } return}
!82Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() { c := make(chan int) go func() { for _, v := range []int{0, 2, 4, 6, 8} { c <- v } close(c) }() Printf("elements: %v\n", print_channel(c))}!func print_channel(c chan int) (i int) { for v := range c { Printf("%v: %v\n", i, v) i++ } return}
!83Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() { c := make(chan int) go func() { for _, v := range []int{0, 2, 4, 6, 8} { c <- v } close(c) }() Printf("elements: %v\n", print_channel(c))}!func print_channel(c chan int) (i int) { for v := range c { Printf("%v: %v\n", i, v) i++ } return}
!84Going Loopy http://slides.games-with-brains.net/
upon reflection
!85Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] * 2 })
}!func print_values(s interface{}) {switch s := s.(type) {case func(int) int:for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s(i))
}case []int:for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
!86Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] * 2 })
}!func print_values(s interface{}) {switch s := s.(type) {case func(int) int:for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s(i))
}case []int:for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
!87Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] * 2 })
}!func print_values(s interface{}) {switch s := s.(type) {case func(int) int:for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s(i))
}case []int:for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
!88Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] * 2 })
}!func print_values(s interface{}) {switch s := s.(type) {case func(int) int:for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s(i))
}case []int:for i, v := range s {Printf("%v: %v\n", i, v)
}}
}
!89Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"import . "reflect"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] })
}!func print_values(s interface{}) {switch s := ValueOf(s); s.Kind() {case Func:p := []Value{ ValueOf(i) }for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s.Call(p)[0].Interface{})
}case Slice:for i := 0; i < s.Len(); i++ {Printf("%v: %v\n", i, s.Index(i))
}}
}
!90Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"import . "reflect"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] })
}!func print_values(s interface{}) {switch s := ValueOf(s); s.Kind() {case Func:p := []Value{ ValueOf(i) }for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s.Call(p)[0].Interface{})
}case Slice:for i := 0; i < s.Len(); i++ {Printf("%v: %v\n", i, s.Index(i))
}}
}
!91Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"import . "reflect"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] })
}!func print_values(s interface{}) {switch s := ValueOf(s); s.Kind() {case Func:p := []Value{ ValueOf(i) }for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s.Call(p)[0].Interface())
}case Slice:for i := 0; i < s.Len(); i++ {Printf("%v: %v\n", i, s.Index(i).Interface())
}}
}
!92Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"import . "reflect"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] })
}!func print_values(s interface{}) {switch s := ValueOf(s); s.Kind() {case Func:p := []Value{ ValueOf(i) }for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s.Call(p)[0].Interface())
}case Slice:for i := 0; i < s.Len(); i++ {Printf("%v: %v\n", i, s.Index(i).Interface())
}}
}
!93Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"import . "reflect"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] })
}!func print_values(s interface{}) {switch s := ValueOf(s); s.Kind() {case Func:p := []Value{ ValueOf(i) }for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s.Call(p)[0].Interface())
}case Slice:for i := 0; i < s.Len(); i++ {Printf("%v: %v\n", i, s.Index(i).Interface())
}}
}
!94Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"import . "reflect"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] })
}!func print_values(s interface{}) {switch s := ValueOf(s); s.Kind() {case Func:p := []Value{ ValueOf(i) }for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s.Call(p)[0].Interface())
}case Slice:for i := 0; i < s.Len(); i++ {Printf("%v: %v\n", i, s.Index(i).Interface())
}}
}
!95Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"import . "reflect"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] })
}!func print_values(s interface{}) {switch s := ValueOf(s); s.Kind() {case Func:p := []Value{ ValueOf(i) }for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s.Call(p)[0].Interface())
}case Slice:for i := 0; i < s.Len(); i++ {Printf("%v: %v\n", i, s.Index(i).Interface())
}}
}
!96Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"import . "reflect"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] })
}!func print_values(s interface{}) {switch s := ValueOf(s); s.Kind() {case Func:p := []Value{ ValueOf(i) }for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s.Call(p)[0].Interface())
}case Slice:for i := 0; i < s.Len(); i++ {Printf("%v: %v\n", i, s.Index(i).Interface())
}}
}
!97Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"import . "reflect"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] })
}!func print_values(s interface{}) {switch s := ValueOf(s); s.Kind() {case Func:p := []Value{ ValueOf(i) }for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s.Call(p)[0].Interface())
}case Slice:for i := 0; i < s.Len(); i++ {Printf("%v: %v\n", i, s.Index(i).Interface())
}}
}
!98Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"import . "reflect"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] })
}!func print_values(s interface{}) {switch s := ValueOf(s); s.Kind() {case Func:p := []Value{ ValueOf(i) }for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s.Call(p)[0].Interface())
}case Slice:for i := 0; i < s.Len(); i++ {Printf("%v: %v\n", i, s.Index(i).Interface())
}}
}
!99Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"import . "reflect"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] })
}!func print_values(s interface{}) {switch s := ValueOf(s); s.Kind() {case Func:p := []Value{ ValueOf(i) }for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s.Call(p)[0].Interface())
}case Slice:for i := 0; i < s.Len(); i++ {Printf("%v: %v\n", i, s.Index(i).Interface())
}}
}
!100Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"import . "reflect"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] })
}!func print_values(s interface{}) {switch s := ValueOf(s); s.Kind() {case Func:p := []Value{ ValueOf(i) }for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s.Call(p)[0].Interface())
}case Slice:for i := 0; i < s.Len(); i++ {Printf("%v: %v\n", i, s.Index(i).Interface())
}}
}
!101Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"import . "reflect"!func main() {s := []int{0, 2, 4, 6, 8}print_values(s)print_values(func(i int) int { return s[i] })
}!func print_values(s interface{}) {switch s := ValueOf(s); s.Kind() {case Func:p := []Value{ ValueOf(i) }for i := 0; i < 5; i++ {Printf("%v: %v\n", i, s.Call(p)[0].Interface())
}case Slice:for i := 0; i < s.Len(); i++ {Printf("%v: %v\n", i, s.Index(i).Interface())
}}
}
!102Going Loopy http://slides.games-with-brains.net/
user-defined type
!103Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!type Iterable interface {Each(func(interface{}))
}!type IterableSlice[]intfunc (i IterableSlice) Each(f func(interface{})) {for _, v := range i {f(v)
}}!func main() {s := IterableSlice{ 0, 2, 4, 6, 8 }i := 0s.Each(func(v interface{}) {Printf("%v: %v\n", i, v)i++
})}
!104Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!type Iterable interface {Each(func(interface{}))
}!type IterableSlice[]intfunc (i IterableSlice) Each(f func(interface{})) {for _, v := range i {f(v)
}}!func main() {s := IterableSlice{ 0, 2, 4, 6, 8 }i := 0s.Each(func(v interface{}) {Printf("%v: %v\n", i, v)i++
})}
!105Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!type Iterable interface {Each(func(interface{}))
}!type IterableSlice[]intfunc (i IterableSlice) Each(f func(interface{})) {for _, v := range i {f(v)
}}!func main() {s := IterableSlice{ 0, 2, 4, 6, 8 }i := 0s.Each(func(v interface{}) {Printf("%v: %v\n", i, v)i++
})}
!106Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!type Iterable interface {Each(func(interface{}))
}!type IterableSlice[]intfunc (i IterableSlice) Each(f func(interface{})) {for _, v := range i {f(v)
}}!func main() {s := IterableSlice{ 0, 2, 4, 6, 8 }i := 0s.Each(func(v interface{}) {Printf("%v: %v\n", i, v)i++
})}
!107Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!type Iterable interface {Each(func(interface{}))
}!type IterableSlice[]intfunc (i IterableSlice) Each(f func(interface{})) {for _, v := range i {f(v)
}}!func main() {s := IterableSlice{ 0, 2, 4, 6, 8 }i := 0s.Each(func(v interface{}) {Printf("%v: %v\n", i, v)i++
})}
!108Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!type Iterable interface {Each(func(interface{}))
}!type IterableSlice[]intfunc (i IterableSlice) Each(f func(interface{})) {for _, v := range i {f(v)
}}!func main() {s := IterableSlice{ 0, 2, 4, 6, 8 }i := 0s.Each(func(v interface{}) {Printf("%v: %v\n", i, v)i++
})}
!109Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!type Iterable interface {Each(func(interface{}))
}!type IterableSlice[]intfunc (i IterableSlice) Each(f func(interface{})) {for _, v := range i {f(v)
}}!func main() {s := IterableSlice{ 0, 2, 4, 6, 8 }i := 0s.Each(func(v interface{}) {Printf("%v: %v\n", i, v)i++
})}
!110Going Loopy http://slides.games-with-brains.net/
package mainimport . "fmt"!type Iterable interface {Each(func(interface{}))
}!type IterableSlice[]intfunc (i IterableSlice) Each(f func(interface{})) {for _, v := range i {f(v)
}}!func main() {s := IterableSlice{ 0, 2, 4, 6, 8 }i := 0s.Each(func(v interface{}) {Printf("%v: %v\n", i, v)i++
})}
!111Going Loopy http://slides.games-with-brains.net/
you now know go
Going Loopy 112 http://slides.games-with-brains.net/
http://golang.org/
Going Loopy 114 http://slides.games-with-brains.net/