1 package main // import "vimagination.zapto.org/fizzbuzz" 2 3 type fb struct { 4 Name string 5 Count, Every uint 6 } 7 8 func newFB(name string, every uint) fb { 9 return fb{ 10 Name: name, 11 Count: every, 12 Every: every, 13 } 14 } 15 16 func (f *fb) Next() bool { 17 f.Count-- 18 if f.Count == 0 { 19 f.Count = f.Every 20 return true 21 } 22 return false 23 } 24 25 func main() { 26 fbs := [...]fb{ 27 newFB("Fizz", 3), 28 newFB("Buzz", 5), 29 } 30 for i := 1; i < 1000; i++ { 31 number := true 32 for n := range fbs { 33 if fbs[n].Next() { 34 print(fbs[n].Name) 35 number = false 36 } 37 } 38 if number { 39 print(i) 40 } 41 print("\n") 42 } 43 }