简单介绍Go 字符串比较的实现示例
字符串比较, 可以直接使用 == 进行比较, 也可用用 strings.Compare 比较
go 中字符串比较有三种方式:
== 比较
strings.Compare 比较
strings.EquslFold 比较
#### 代码示例
```go
fmt.Println("go"=="go")
fmt.Println("GO"=="go")
fmt.Println(strings.Compare("GO","go"))
fmt.Println(strings.Compare("go","go"))
fmt.Println(strings.EqualFold("GO","go"))
上述代码执行结果如下:
true false -1 true
Compare 和 EqualFold 区别
EqualFold 是比较UTF-8编码在小写的条件下是否相等,不区分大小写
// EqualFold reports whether s and t, interpreted as UTF-8 strings, // are equal under Unicode case-folding. func EqualFold(s, t string) bool
要注意的是 Compare 函数是区分大小写的, == 速度执行更快
// Compare is included only for symmetry with package bytes. // It is usually clearer and always faster to use the built-in // string comparison operators ==, , and so on. func Compare(a, b string) int
忽略大小写比较
有时候要忽略大小写比较, 可以使用strings.EqualFold 字符串比较是否相等
源码实现
// EqualFold reports whether s and t, interpreted as UTF-8 strings,
// are equal under Unicode case-folding, which is a more general
// form of case-insensitivity.
func EqualFold(s, t string) bool {
for s != "" && t != "" {
// Extract first rune from each string.
var sr, tr rune
if s[0] x
// or wraps around to smaller values.
r := unicode.SimpleFold(sr)
for r != sr && r
通过源码可看到 if 'A'
// Golang program to illustrate the
// strings.EqualFold() Function
package main
// importing fmt and strings
import (
"fmt"
"strings"
)
// calling main method
func main() {
// case insensitive comparing and returns true.
fmt.Println(strings.EqualFold("Geeks", "Geeks"))
// case insensitive comparing and returns true.
fmt.Println(strings.EqualFold("computerscience", "computerscience"))
}
执行结构 true true
到此这篇关于Go 字符串比较的实现示例的文章就介绍到这了。