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 方法來執行程式。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP