Nenhuma descrição

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package main
  2. // MIN OMIT
  3. func Min[T any](s []T) T {
  4. r := s[0] // assume that s is not empty
  5. for _, v := range s {
  6. if v < r { // INVALID
  7. r = v
  8. }
  9. }
  10. return r
  11. }
  12. // MIN OMIT
  13. // OPERATOR CONSTRAINT OMIT
  14. // Ordered is a type constraint that matches any ordered type.
  15. // An ordered type is one that supports the <, <=, >, and >= operators.
  16. type Ordered interface {
  17. ~int | ~int8 | ~int16 | ~int32 | ~int64 |
  18. ~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr |
  19. ~float32 | ~float64 |
  20. ~string
  21. }
  22. // OPERATOR CONSTRAINT OMIT
  23. // OPERATOR MIN OMIT
  24. func Min[T Ordered](s []T) T {
  25. r := s[0] // assume that s is not empty
  26. for _, v := range s {
  27. if v < r { // INVALID
  28. r = v
  29. }
  30. }
  31. return r
  32. }
  33. // OPERATOR MIN OMIT
  34. // OPERATOR MIN VALID OMIT
  35. func Min[T Ordered](s []T) T {
  36. r := s[0] // assume that s is not empty
  37. for _, v := range s {
  38. if v < r { // VALID!
  39. r = v
  40. }
  41. }
  42. return r
  43. }
  44. // OPERATOR MIN VALID OMIT