Golang 数值型字符串比较大小

Jackey Golang 9,110 次浏览 没有评论

代码:

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. )
  6.  
  7. func main() {
  8. var str1 = "2"
  9. var str2 = "11"
  10. fmt.Println(str1 < str2)
  11. str1 = "02"
  12. str2 = "11"
  13. fmt.Println(str1 < str2)
  14. }

结果:

  1. false
  2. true

总结:

从左到右逐个字符根据ASCII码值的大小来比较。如果要用到字符串比较大小,必须保证位数相同,进制相同。

运行效率比较:

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "strconv"
  6. "time"
  7. )
  8.  
  9. func main() {
  10. timeNow := time.Now().UnixNano()
  11. fmt.Println(timeNow)
  12. var str1 = "20191220"
  13. var str2 = "20191202"
  14. var result bool
  15. for i := 0; i < 100000; i++ {
  16. result = str1 < str2
  17. }
  18. timeEnd := time.Now().UnixNano()
  19. fmt.Println(timeEnd)
  20. fmt.Println(result, timeEnd-timeNow)
  21.  
  22.  
  23. timeNow = time.Now().UnixNano()
  24. fmt.Println(timeNow)
  25. str1 = "20191220"
  26. str2 = "20191202"
  27. for i := 0; i < 100000; i++ {
  28. num1, _ := strconv.Atoi(str1)
  29. num2, _ := strconv.Atoi(str2)
  30. result = num1 < num2
  31. }
  32. timeEnd = time.Now().UnixNano()
  33. fmt.Println(timeEnd)
  34. fmt.Println(result, timeEnd-timeNow)
  35. }

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Go