Comparing Strings in Golang

Comparing strings together is an important task that is almost unavoidable in large programs. In this post, we will see different ways of comparing strings in Golang.

1. Using the Golang Comparison Operators

There is a multitude of comparison operators in Go. Each operator works in the way it looks. We will see what are the ways of using them to compare strings in Go.

1.1) The double equals operator

The double equal is an operator which essentially compares two strings on each side of it and returns the boolean value of the comparison result. That is if they match the result is true and if they don’t, it’s false.

package main

import (
	"fmt"
)

func main() {
	a := "Hello"
	b := "Hi"
	chk := a == b  // checks if they are equal

	fmt.Println(chk)  // false
}

1.2) The inequality operator

The inequality operator works just like the equality operator except the output is reversed. Here is the inequality operator used in string comparison.

package main

import (
	"fmt"
)

func main() {
	a := "abc"
	b := "Abc"
	chk := a != b  // checks if they are equal

	fmt.Println(chk)  // true
}

1.3) The general comparison operators

The comparison operators work in the lexicographical comparison. If it fulfills the condition then it’s true and for all other cases, it’s false. Below is the example of comparison operators in action.

package main

import (
	"fmt"
)

func main() {
	s1 := "abc"
	s2 := "cab"
		
	v := s1 > s2
	v1 := s1 < s2
	v2 := s1 >= s2
	v3 := s1 <= s2

	fmt.Println(v)  // false
	fmt.Println(v1)  // true
	fmt.Println(v2)  // false
	fmt.Println(v3)  // true
}

2. Golang Strings Compare() method

The strings package contains a compare method. The signature of this method is shown below.

func Compare(s1, s2 string) int
package main

import (
	"fmt"
	"strings"
)

func main() {
	s1 := "abc"
	s2 := "cab"
	
	v := strings.Compare(s1, s2)
	
	fmt.Println(v) // -1
}

As you can see, it returns o if they are the same. If the first one is greater then it returns 1. If it’s lesser then it returns -1. The greater and lesser values are defined by their lexicographical order.

3. Strings EqualFold() method to compare strings

The EqualFold method in the strings package can be used for string equality. It does this irrespective of string cases. So, we can check two strings without any extra conversion of cases. It is a very efficient method of checking string equality.

package main

import (
	"fmt"
	"strings"
)

func main() {
	s1 := "XyZ"
	s2 := "xYz"
	
	v := strings.EqualFold(s1, s2)  // cases don't matter
	
	fmt.Println(v) // true
}