文字列同士の比較は、大規模なプログラムではほぼ避けて通れない重要な作業です。
本記事では、Golangで文字列を比較するさまざまな方法を見ていきます。
目次
Golangの比較演算子を使う
Golangには多数の比較演算子があります。ここでは、Golangで文字列を比較するためにどのような使い方があるのかを見ていきます。
イコール演算子(=)を使う
イコールは、基本的に2つの文字列を両側で比較し、比較結果のブール値を返す演算子です。
つまり、両者が一致すれば結果はtrue、一致しなければfalseとなります。
package main
import (
"fmt"
)
func main() {
x := "Hello"
y := "Hi"
result := x == y
fmt.Println(result) // false
}
不等号演算子を使う
不等号演算子は、出力が反転する以外は、等号演算子と同じように動作します。
以下は、文字列比較で使われる不等号演算子です。
package main
import (
"fmt"
)
func main() {
x := "abc"
y := "Abc"
result := x != y
fmt.Println(chk) // true
}
一般的な比較演算子
比較演算子は辞書式に比較します。条件を満たせばtrue、それ以外の場合はfalseとなります。
以下は、比較演算子の動作の例です。
package main
import (
"fmt"
)
func main() {
s1 := "abc"
s2 := "xyz"
result1 := s1 > s2
result2 := s1 < s2
result3 := s1 >= s2
result4 := s1 <= s2
fmt.Println(result1) // false
fmt.Println(result2) // true
fmt.Println(result3) // false
fmt.Println(result4) // true
}
stringsパッケージのCompare()メソッド
stringsパッケージには、compareメソッドが含まれています。
このメソッドの構造は以下のとおりです。
func Compare(s1, s2 string) int
Compareメソッドを使用したコード例は以下のとおりです。
package main
import (
"fmt"
"strings"
)
func main() {
s1 := "abc"
s2 := "xyz"
s3 := "aaa"
result1 := strings.Compare(s1, "abc")
result2 := strings.Compare(s1, s2)
result3 := strings.Compare(s1, s3)
fmt.Println(result1) // 0
fmt.Println(result2) // -1
fmt.Println(result3) // 1
}
Compareメソッドは比較した文字列が同じであれば0を返します。
もし最初のものが大きければ、1を返します。小さい場合は-1が返されます。
大きい値と小さい値は、辞書順で定義されています。
文字列を比較するためのEqualFold()メソッド
文字列パッケージのEqualFoldメソッドを使用すると、文字列の等値性を確認することができます。
これは、文字列のケースに関係なく実行されます。
つまり、2つの文字列をチェックする際に、余計な大文字小文字の変換をすることなくチェックすることができます。
package main
import (
"fmt"
"strings"
)
func main() {
s1 := "AbC"
s2 := "aBc"
result := strings.EqualFold(s1, s2)
fmt.Println(result) // true
}