this repo has no description

:sparkles: (Go) arrays and slices

Changed files
+82
Go
+34
Go/arrays/arrays.go
··· 1 + package main 2 + 3 + func Sum(numbers []int) (sum int) { 4 + for _, number := range numbers { 5 + sum += number 6 + } 7 + 8 + return 9 + } 10 + 11 + func SumAll(numbersToSum ...[]int) []int { 12 + var sums []int 13 + 14 + for _, numbers := range numbersToSum { 15 + sums = append(sums, Sum(numbers)) 16 + } 17 + 18 + return sums 19 + } 20 + 21 + func SumAllTails(numbersToSum ...[]int) []int { 22 + var sums []int 23 + 24 + for _, numbers := range numbersToSum { 25 + if len(numbers) == 0 { 26 + sums = append(sums, 0) 27 + } else { 28 + tail := numbers[1:] 29 + sums = append(sums, Sum(tail)) 30 + } 31 + } 32 + 33 + return sums 34 + }
+48
Go/arrays/arrays_test.go
··· 1 + package main 2 + 3 + import ( 4 + "testing" 5 + "reflect" 6 + ) 7 + 8 + func TestSum(t *testing.T) { 9 + t.Run("collection of 5 numbers", func(t *testing.T) { 10 + numbers := []int{1, 2, 3, 4, 5} 11 + 12 + got := Sum(numbers) 13 + want := 15 14 + 15 + if got != want { 16 + t.Errorf("got %d want %d given, %v", got, want, numbers) 17 + } 18 + }) 19 + } 20 + 21 + func TestSumAll(t *testing.T) { 22 + got := SumAll([]int{1, 2}, []int{0, 9}) 23 + want := []int{3, 9} 24 + 25 + if !reflect.DeepEqual(got, want) { 26 + t.Errorf("got %v want %v", got, want) 27 + } 28 + } 29 + 30 + func TestSumAllTails(t *testing.T) { 31 + t.Run("make the sum of some slices", func(t *testing.T) { 32 + got := SumAllTails([]int{1, 2}, []int{0, 9}) 33 + want := []int{2, 9} 34 + 35 + if !reflect.DeepEqual(got, want) { 36 + t.Errorf("got %v want %v", got, want) 37 + } 38 + }) 39 + 40 + t.Run("safely sum empty slices", func(t *testing.T) { 41 + got := SumAllTails([]int{}, []int{3, 4, 5}) 42 + want := []int{0, 9} 43 + 44 + if !reflect.DeepEqual(got, want) { 45 + t.Errorf("got %v want %v", got, want) 46 + } 47 + }) 48 + }