Advertisement
zergon321

Go generics

Mar 16th, 2022
1,512
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 0.79 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "fmt"
  5.  
  6.     "golang.org/x/exp/constraints"
  7. )
  8.  
  9. type Numeric interface {
  10.     int64 | float64
  11. }
  12.  
  13. func Sum[K comparable, V Numeric](dict map[K]V) V {
  14.     var sum V = 0
  15.  
  16.     for _, value := range dict {
  17.         sum += value
  18.     }
  19.  
  20.     return sum
  21. }
  22.  
  23. func Max[T constraints.Ordered](a, b T) T {
  24.     if a > b {
  25.         return a
  26.     }
  27.  
  28.     return b
  29. }
  30.  
  31. func StringJoin[T any](list []T) string {
  32.     return fmt.Sprint(list)
  33. }
  34.  
  35. func main() {
  36.     // Initialize a map for the integer values
  37.     ints := map[string]int64{
  38.         "first":  34,
  39.         "second": 12,
  40.     }
  41.  
  42.     // Initialize a map for the float values
  43.     floats := map[string]float64{
  44.         "first":  35.98,
  45.         "second": 26.99,
  46.     }
  47.  
  48.     fmt.Println(Sum(ints))
  49.     fmt.Println(Sum(floats))
  50.     fmt.Println(StringJoin([]int{4, 8, 16, 32}))
  51.     fmt.Println(Max(2, 19))
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement