// +build ignore | |
package main | |
import "fmt" | |
// 1 START OMIT | |
type F func(*State) F | |
type State int | |
func Begin(s *State) F { | |
*s = 1 | |
return Middle | |
} | |
func Middle(s *State) F { | |
*s++ | |
if *s >= 10 { | |
return End | |
} | |
return Middle | |
} | |
// 1 END OMIT | |
// 2 START OMIT | |
func End(s *State) F { | |
fmt.Println(*s) | |
return nil | |
} | |
func main() { | |
var f F = Begin | |
var s State | |
for f != nil { | |
f = f(&s) | |
} | |
} | |
// 2 END OMIT |