(numbers []T)
| 19 | var ErrEmptySlice = errors.New("empty slice provided") |
| 20 | |
| 21 | func Mode[T constraints.Number](numbers []T) (T, error) { |
| 22 | |
| 23 | countMap := make(map[T]int) |
| 24 | |
| 25 | n := len(numbers) |
| 26 | |
| 27 | if n == 0 { |
| 28 | return 0, ErrEmptySlice |
| 29 | } |
| 30 | |
| 31 | for _, number := range numbers { |
| 32 | countMap[number]++ |
| 33 | } |
| 34 | |
| 35 | var mode T |
| 36 | count := 0 |
| 37 | |
| 38 | for k, v := range countMap { |
| 39 | if v > count { |
| 40 | count = v |
| 41 | mode = k |
| 42 | } |
| 43 | } |
| 44 | |
| 45 | return mode, nil |
| 46 | |
| 47 | } |
no outgoing calls