Solution: statistics
examples/test-statistics/stats.go
package main import "fmt" func main() { numbers := []int{2, 3, 5, -1, 1, 8} fmt.Println(numbers) if len(numbers) == 0 { fmt.Println("We cannot provide stats on empty set of numbers") return } min, max, total, average := stats(numbers) //fmt.Println(min(numbers)) fmt.Printf("Total: %v\n", total) fmt.Printf("Average: %v\n", average) fmt.Printf("Min: %v\n", min) fmt.Printf("Max: %v\n", max) } func stats(numbers []int) (int, int, int, float32) { total := 0 min := numbers[0] max := numbers[0] for _, num := range numbers { if num < min { min = num } if num > max { max = num } total += num } average := float32(total) / float32(len(numbers)) return min, max, total, average }
examples/test-statistics/stats_test.go
package main import "testing" func TestStats(t *testing.T) { numbers := []int{2, 3, 5, -1, 1, 8} min, max, total, average := stats(numbers) if min != -1 { t.Errorf("min is expected to be -1 actual: %v", min) } if max != 8 { t.Errorf("max is expected to be 8 actual: %v", max) } if total != 18 { t.Errorf("total is expected to be 18 actual: %v", total) } if average != 3 { t.Errorf("average is expected to be 3 actual: %v", average) } }