Skip to content

Instantly share code, notes, and snippets.

@benbagley
Last active May 13, 2019 22:17
Show Gist options
  • Save benbagley/424f5f03924bda2cbd26b362a41c85ad to your computer and use it in GitHub Desktop.
Save benbagley/424f5f03924bda2cbd26b362a41c85ad to your computer and use it in GitHub Desktop.
Three versions
package main
import "fmt"
func main() {
for i := 1; i <= 100; i++ {
if i%15 == 0 {
fmt.Println("FizzBuzz")
} else if i%3 == 0 {
fmt.Println("Fizz")
} else if i%5 == 0 {
fmt.Println("Buzz")
} else {
fmt.Println(i)
}
}
}
// Refactored Version
func main() {
for i := 1; i <= 100; i++ {
result := ""
if i%3 == 0 { result += "Fizz" }
if i%5 == 0 { result += "Buzz" }
if result != "" {
fmt.Println(result)
continue
}
fmt.Println(i)
}
}
// goRoutine
func main() {
for out := range FizzBuzz(100) {
fmt.Println(out)
}
}
func FizzBuzz(amount int) <-chan string {
out := make(chan string, amount)
go func() {
for i := 1; i <= amount; i++ {
result := ""
if i%3 == 0 { result += "Fizz" }
if i%5 == 0 { result += "Buzz" }
if result == "" { result = fmt.Sprintf("%v", i) }
out <- result
}
close(out)
}()
return out
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment