مقایسه رشته ها

می‌توان رشته‌ها را به روش‌های مختلف با هم مقایسه کرد. برای مقایسه رشته ها ابتدا باید پکیج strings را در برنامه وارد کنید:

import "strings"

به عنوان مثال با استفاده از عملگر == می‌توان تست کرد که آیا دو رشته با هم برابرند یا نه. با وجودیکه رشته‌ها از نوع مرجع هستند، این عملگر مقدار رشته‌ها را با هم مقایسه می‌کند نه آنها را.

package main

import "fmt"

func main() {
	var str1 = "Hello"
	var str2 = "Hello"
	var str3 = "Goodbye"

	fmt.Printf("str1 == str2 : %t \n", (str1 == str2))
	fmt.Printf("str1 == str3 : %t   ", (str1 == str3))
}
str1 == str2 : true
str1 == str3 : false

همچنین از متد strings.Compare هم برای مقایسه دو رشته استفاده می‌شود. به کد زیر توجه کنید :

package main

import (
	"fmt"
	"strings"
)

func main(){
	var str1 = "Hello"
	var str2 = "Hello"
	var str3 = "Goodbye"

	fmt.Println(strings.Compare(str1, str2))
	fmt.Println(strings.Compare(str1, str3))
}
0
1

متد strings.Compare دو رشته را قبول می‌کند و اگر با هم برابر باشند مقدار 0، اگر مقدار اولین رشته از دومین رشته بیشتر باشد مقدار 1 و اگر مقدار اولین رشته از دومین رشته کوچکتر باشد مقدار 1- را بر می‌گرداند. بنابراین برای تشخیص تساوی دو رشته با استفاده از متد strings.Compare باید مانند کد بالا تست کنید که آیا مقدار برگشتی برابر صفر است یا نه. چطور تشخیص بدهیم که یک رشته از رشته دیگر کوچکتر یا بزرگتر است؟ هر کاراکتر در رشته به یونیکد معادل خود تبدیل می‌شود. اولین کاراکتر اولین رشته با اولین کاراکتر دومین رشته مقایسه می‌شود. اگر برابر بودند سپس دومین کارکترها و به همین ترتیب بقیه کاراکترها با هم مقایسه می‌شوند. متد strings.EqualFold دو رشته را بدون در نظر گرفتن بزرگی و کوچکی حروف با هم مقایسه می کند:

package main

import (
	"fmt"
	"strings"
)

func main(){
	var str1 = "Microsoft"
	var str2 = "microsoft"

	if strings.EqualFold(str1, str2) {
		fmt.Println("The strings are equal.")
	}
}
The strings are equal.