Как проверить равенство срезов байтов в Golang?

Опубликовано: 20 Февраля, 2022

В языке Go фрагмент более мощный, гибкий, удобный, чем массив, и представляет собой легкую структуру данных. Срез представляет собой последовательность переменной длины, в которой хранятся элементы аналогичного типа, вам не разрешается хранить элементы разных типов в одном срезе.
В срезе Go вы можете проверить равенство срезов с помощью функции Equal () . Эта функция возвращает истину, если оба среза равны, или возвращает ложь, если оба среза не равны. Он определен в пакете байтов, поэтому вам необходимо импортировать пакет байтов в свою программу для доступа к функции Equals.

Синтаксис:

 func Equal (slice_1, slice_1 [] byte) bool

Здесь мы проверяем равенство между slice_1 и slice_2, и тип возвращаемого значения этой функции - bool. Обсудим эту концепцию на примерах:

Example 1:

// Go program to illustrate how to
// check the equality of the slices
package main
  
import (
    "bytes"
    "fmt"
)
  
func main() {
  
    // Creating and initializing slices of bytes
    // Using shorthand declaration
  
    slice_1 := []byte{"A", "N", "M", "A",
                      "P", "A", "A", "W"}
      
    slice_2 := []byte{"A", "N", "M", "A",
                      "P", "A", "A", "W"}
  
    // Checking the equality of the slices
    // Using Equal function
    res := bytes.Equal(slice_1, slice_2)
      
    if res == true {
      
        fmt.Println("Slice_1 is equal to Slice_2")
    } else {
      
        fmt.Println("Slice_1 is not equal to Slice_2")
    }
  
}

Выход:

 Slice_1 равен Slice_2

Example 2:

// Go program to illustrate how to
// check the equality of the slices
package main
  
import (
    "bytes"
    "fmt"
)
  
func main() {
  
    // Creating and initializing 
    // slices of bytes
    // Using shorthand declaration
    slice_1 := []byte{"A", "N", "M",
            "A", "P", "A", "A", "W"}
      
    slice_2 := []byte{"g", "e", "e", "k", "s"}
      
    slice_3 := []byte{"A", "N", "M", "A",
                      "P", "A", "A", "W"}
  
    // Checking the equality of the slices
    // Using Equal function
    res1 := bytes.Equal(slice_1, slice_2)
    res2 := bytes.Equal(slice_1, slice_3)
    res3 := bytes.Equal(slice_2, slice_3)
    res4 := bytes.Equal([]byte("GeeksforGeeks"),
                        []byte("GeeksforGeeks"))
    res5 := bytes.Equal([]byte("Geeks"), []byte("GFG"))
    res6 := bytes.Equal(slice_1, []byte("P"))
  
    // Displaying results
    fmt.Println("Result 1:", res1)
    fmt.Println("Result 2:", res2)
    fmt.Println("Result 3:", res3)
    fmt.Println("Result 4:", res4)
    fmt.Println("Result 5:", res5)
    fmt.Println("Result 6:", res6)
  
}

Выход:

Результат 1: ложь
Результат 2: верно
Результат 3: ложь
Результат 4: верно
Результат 5: ложь
Результат 6: ложь