arrayex.go 446 B

12345678910111213141516171819202122232425262728
  1. package arrayex
  2. import (
  3. "regexp"
  4. "strings"
  5. )
  6. func IndexOf(a []string, e interface{}) int {
  7. n := len(a)
  8. var i int = 0
  9. for ; i < n; i++ {
  10. if cmp(e, a[i]) == 0 {
  11. return i
  12. }
  13. }
  14. return -1
  15. }
  16. func cmp(a interface{}, b interface{}) int {
  17. s1 := a.(string)
  18. s2 := b.(string)
  19. if strings.Index(s2, "*") > -1 {
  20. h, _ := regexp.MatchString(strings.Replace(s2, "*", ".*", 1), s1)
  21. if h {
  22. return 0
  23. }
  24. }
  25. return strings.Compare(s1, s2)
  26. }