Go语言程序:区分字符串 == 运算符和 equals() 方法
在 Go 编程语言中,字符串是内置数据类型,表示字符序列。它们使用双引号 (") 定义,可以包含任何有效的 Unicode 字符。Go 中的 == 运算符用于确定包括字符串在内的两个值是否相等。== 运算符通过比较它们的值并返回布尔值来确定两个操作数是否相等。另一方面,strings 包的 EqualFold() 方法不区分大小写地检查两个字符串,并返回一个布尔值,指示它们是否相等。
方法 1:使用 bytes.Equal() 方法
在这个例子中,我们将看到如何区分字符串 == 运算符和 equals() 方法。在这里,函数 []byte(mystr1) 和 []byte(mystr2) 将字符串转换为字节切片,然后转换回字节。equal() 函数比较这两个切片并生成真或假布尔值。需要注意的是,由于此方法比较字符串的字节表示,因此与使用 "==" 运算符相比,结果可能会因字符串的编码而异。
语法
bytes.Equal()
在这种方法中,使用 equal 方法比较两个字节切片的相等性。如果切片相等或不相等,则返回布尔值。bytes 包包含该方法的定义。
算法
步骤 1 − 创建一个 main 包,并在程序中声明 fmt(格式包)和 bytes 包,其中 main 生成可执行示例,fmt 帮助格式化输入和输出。
步骤 2 − 创建一个 main 函数,并在该函数中创建一个名为 mystr1 和 mystr2 的字符串。将它们打印到控制台。
步骤 3 − 使用 bytes.Equal 方法检查转换为字节的切片是否相等。
步骤 4 − 此方法将返回 false 或 true 的布尔值。
步骤 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 方法
在这个例子中,我们将看到如何区分字符串 == 运算符和 equals 方法。这里,使用 strings 的第二次比较将导致对使用 == 运算符的初始比较返回 true。EqualFold() 将返回 true。让我们通过示例和算法来清晰地理解这个概念。
语法
strings.EqualFold()
使用 EqualFold 函数比较两个字符串的相等性时,不考虑字符的大小写。如果两个字符串相等(true),则该函数返回布尔结果,否则返回 false 值(false)。
算法
步骤 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
结论
我们使用两个例子执行了区分 == 运算符和 equals 方法的程序。在第一个例子中,我们使用了 bytes.Equal() 方法,在第二个例子中,我们使用了 EqualFold 方法来执行程序。