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 方法来执行程序。

更新于:2023年2月20日

847 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告