Golang程序 区分字符串==操作符和equals()方法
在Go编程语言中,字符串是一种内置的数据类型,表示字符序列。它们用双引号(”)定义,可以包含任何有效的Unicode字符。Go中的==运算符用于确定两个值,包括字符串,是否相等。==运算符通过比较两个操作数的值来确定它们是否相等,并返回一个布尔值。另一方面,字符串包的EqualFold()方法对两个字符串进行大小写不敏感的检查,并返回一个表示它们是否相等的布尔值。
方法1:使用bytes.Equal()方法
在这个例子中,我们将看到如何区分string==运算符和equals()方法。在这里,函数[]byte(mystr1)和[]byte(mystr2)将字符串翻译成字节片,然后再返回到字节。equal()函数比较这两个片断并产生一个真或假的布尔值。值得注意的是,由于该方法比较的是字符串的字节表示,与使用”==”运算符相比,结果可能会根据字符串的编码而有所不同。
语法
bytes.Equal()
在这个方法中,两个字节片使用equal方法比较是否相等。如果两片字节相等或不相等,将返回一个布尔值。bytes包包含该方法的定义。
算法
- 第1步 -创建一个包main,并在程序中声明fmt(格式包)和bytes包,其中main产生可执行的例子,fmt帮助格式化输入和输出。
-
第2步 – 创建一个main函数,在该函数中创建一个名为mystr1和mystr2的字符串。在控制台中打印它们。
-
第 3步 – 使用bytes.Equal方法来检查转换为字节的片断是否相等。
-
第 4步 – 这个方法将返回一个布尔值,即假或真。
-
第 5步 – 输出将使用fmt.Println()函数打印在控制台,其中ln表示新行。
例子
在这个例子中,我们将使用golang的byte.Equal()函数。
package main
import (
"bytes"
"fmt"
)
func main() {
mystr1 := "hello" //created string1
fmt.Println("The string1 created here is:", mystr1)
mystr2 := "alexa" //created string2
fmt.Println("The string2 created here is:", mystr2)
fmt.Println("Are the strings equal?")
// Using bytes.Equal() method
fmt.Println(bytes.Equal([]byte(mystr1), []byte(mystr2))) // false
}
输出
The string1 created here is: hello
The string2 created here is: alexa
Are the strings equal?
false
方法2:使用EqualFold方法
在这个例子中,我们将看到如何区分字符串==运算符和等价法。在这里,使用字符串的第二次比较将导致使用==运算符的初次比较为真。真将由EqualFold()返回。让我们通过实例和算法来清楚地了解这个概念。
语法
strings.EqualFold()
使用EqualFold函数比较两个字符串是否相等时,不考虑字符的大小写。如果两个字符串相等(真),该函数会返回一个布尔值,否则会返回一个假值(假)。
算法
- 第1步 – 创建一个包main,并在程序中声明fmt(格式包)和strings包,其中main产生可执行实例,fmt帮助格式化输入和输出。
-
第2步 – 创建一个函数main,并在该函数中声明两个字符串变量,mystr1和mystr2,并以一些值初始化它们。
-
第 3步 – 使用==运算符来比较mystr1和mystr2。
-
第4步 – 如果mystr1和mystr2相等,在控制台中打印 “str1和str2相等”。如果它们不相等,则打印 “str1和str2不相等”。
-
第5步 – 使用EqualFold()函数对str1和str2进行不敏感的比较。
-
第6步 – 如果str1和str2相等,向控制台打印 “str1和str2相等”。如果它们不相等,则打印 “str1和str2不相等”。
-
第7步 – 使用fmt.Println()函数执行打印语句,其中ln表示新行。
例子
在下面的例子中,我们将使用EqualFold方法
package main
import (
"fmt"
"strings"
)
func main() {
mystr1 := "create"
fmt.Println("The string1 created here is:", mystr1)
mystr2 := "craete"
fmt.Println("The string2 created here is:", mystr2)
// Using == operator
fmt.Println("Are the strings equal using == operator?")
if mystr1 == mystr2 {
fmt.Println("str1 and str2 are equal")
} else {
fmt.Println("str1 and str2 are not equal")
}
// Using strings.EqualFold() method
fmt.Println("Are the strings equal using EqualFold method?")
if strings.EqualFold(mystr1, mystr2) {
fmt.Println("str1 and str2 are equal")
} else {
fmt.Println("str1 and str2 are not equal")
}
}
输出
The string1 created here is: create
The string2 created here is: craete
Are the strings equal using == operator?
str1 and str2 are not equal
Are the strings equal using EqualFold method?
str1 and str2 are not equal
结论
我们用两个例子执行了区分==运算符和等价方法的程序。在第一个例子中,我们使用bytes.Equal()方法,在第二个例子中,我们使用EqualFold方法来执行该程序。