package main import "flag" var sumMax *int = flag.Int("max", 1000, "max value to sum to"); var sumMethod *int = flag.Int("method", 0, "sum method"); func Between(a, b int) chan int { c := make(chan int, 1000); go func() { for a <= b { c <- a; a += 1; } close(c); }(); return c; } func ChanSum(max int) int { sum := 0; for i := range Between(0, *sumMax) { sum += i } return sum; } func LoopSum(max int) int { sum := 0; i := 0; for i <= max { sum += i; i += 1; } return sum; } func main() { flag.Parse(); var sum int; var max int = *sumMax; if *sumMethod == 1 { sum = LoopSum(max); } else { sum = ChanSum(max); } println("Sum is", sum); }