Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

arrays.go 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package util
  2. import (
  3. "fmt"
  4. "math/rand"
  5. "time"
  6. )
  7. // This doesn't work
  8. // func Choice(ary ...interface{}) interface{} {
  9. // rand.Seed(time.Now().UnixNano())
  10. // l := len(ary)
  11. // return ary[rand.Intn(l)]
  12. // }
  13. func Debug(msg ...interface{}) {
  14. fmt.Println(msg)
  15. }
  16. func ChoiceInt(ary []int) int {
  17. rand.Seed(time.Now().UnixNano())
  18. l := len(ary)
  19. return ary[rand.Intn(l)]
  20. }
  21. func ChoiceStr(ary []string) string {
  22. rand.Seed(time.Now().UnixNano())
  23. l := len(ary)
  24. r := rand.Intn(l)
  25. // fmt.Printf("Selected %s (element %d)\n", ary[r], r)
  26. return ary[r]
  27. }
  28. func ChoiceMap(ary map[string]int) (string, int) {
  29. rand.Seed(time.Now().UnixNano())
  30. l := len(ary)
  31. keys := make([]string, 0, l)
  32. for k := range ary {
  33. keys = append(keys, k)
  34. }
  35. sel := ChoiceStr(keys)
  36. return sel, ary[sel]
  37. }
  38. // func ChoiceMap(ary map[string]int) (string, int) {
  39. // rand.Seed(time.Now().UnixNano())
  40. // l := len(ary)
  41. // if l == 0 {
  42. // return "", 0
  43. // }
  44. // // fmt.Println(l)
  45. // key, val, rot := "", 0, 0
  46. // for key == "" {
  47. // // Debug(rot, key, val)
  48. // for k, v := range ary {
  49. // // Debug(k, v)
  50. // // Debug(rot)
  51. // r := 0
  52. // if rot < 3 {
  53. // r = rand.Intn(l)
  54. // }
  55. // if r == 0 {
  56. // return k, v
  57. // }
  58. // }
  59. // rot++
  60. // // fmt.Println(key, val)
  61. // }
  62. // return key, val
  63. // }