English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Golang

Контрольные операторы Golang

Функции и методы Golang

Структуры Golang

Срезы и массивы Golang

Строки (String) Golang

Указатели Golang

Интерфейсы Golang

Конкурентоспособность Golang

Ошибка Golang

Другие темы Golang

Сравнение срезов в Go

В языке Go срезы мощнее, гибче, удобнее и легковеснее, чем массивы. Срезы — это изменяемые последовательности, предназначенные для хранения элементов одного и того же типа; в одном срезе не могут храниться элементы разных типов. В срезах Go можно использоватьCompare()Функция сравнивает два среза типа byte.СравнениеЭта функция возвращает целое значение, которое указывает, равны ли эти срезы или нет, и эти значения:

  • Если результат равен 0, то slice_1 == slice_2.

  • Если результат равен -1, то slice_1 < slice_2.

  • Если результат равен +1, то slice_1 > slice_2.

Эта функция определена в пакете bytes, поэтому вам нужно импортировать пакет bytes в вашем программном обеспечении, чтобы получить доступ к функции Compare.

Синтаксис:

func Compare(slice_1, slice_2 []byte) int

Давайте рассмотрим этот концепт с помощью примера:

// сравнение двух строковых разрезов
package main
import (
    "bytes"
    "fmt"
)
func main() {
    // использование краткого объявления для создания и инициализации строковых разрезов
    slice_1 := []byte{'G', 'E', 'E', 'K', 'S'}
    slice_2 := []byte{'G', 'E', 'e', 'K', 'S'}
    // сравнение разрезов
    // использование функции Compare
    res := bytes.Compare(slice_1, slice_2)
    if res == 0 {
        fmt.Println("!..Разрезы равны..!")
    } else {
        fmt.Println("!..Разрезы не равны..!")
    }
}

Вывод:

!..Разрезы не равны..!

Пример сравнения двух строковых разрезов:

package main
import (
    "bytes"
    "fmt"
)
func main() {
    slice_1 := []byte{'A', 'N', 'M', 'O', 'P', 'Q'}
    slice_2 := []byte{'a', 'g', 't', 'e', 'q', 'm'}
    slice_3 := []byte{'A', 'N', 'M', 'O', 'P', 'Q'}
    slice_4 := []byte{'A', 'n', 'M', 'o', 'p', 'Q'}
    // отображение разрезов
    fmt.Println("Разрез 1: ", slice_1)
    fmt.Println("Разрез 2: ", slice_2)
    fmt.Println("Разрез 3: ", slice_3)
    fmt.Println("Разрез 4: ", slice_4)
    // сравнение разрезов, использование Compare
    res1 := bytes.Compare(slice_1, slice_2)
    res2 := bytes.Compare(slice_1, slice_3)
    res3 := bytes.Compare(slice_1, slice_4)
    res4 := bytes.Compare(slice_2, slice_3)
    res5 := bytes.Compare(slice_2, slice_4)
    res6 := bytes.Compare(slice_2, slice_1)
    res7 := bytes.Compare(slice_3, slice_1)
    res8 := bytes.Compare(slice_3, slice_2)
    res9 := bytes.Compare(slice_3, slice_4)
    res10 := bytes.Compare(slice_4, slice_1)
    res11 := bytes.Compare(slice_4, slice_2)
    res12 := bytes.Compare(slice_4, slice_3)
    res13 := bytes.Compare(slice_4, slice_4)
    fmt.Println("\nРезультат 1:", res1)
    fmt.Println("Результат 2:", res2)
    fmt.Println("Результат 3:", res3)
    fmt.Println("Результат 4:", res4)
    fmt.Println("Результат 5:", res5)
    fmt.Println("Результат 6:", res6)
    fmt.Println("Результат 7:", res7)
    fmt.Println("Результат 8:", res8)
    fmt.Println("Результат 9:", res9)
    fmt.Println("Результат 10:", res10)
    fmt.Println("Результат 11:", res11)
    fmt.Println("Результат 12:", res12)
    fmt.Println("Результат 13:", res13)
}

Вывод:

Срез 1: [65 78 77 79 80 81]
Срез 2: [97 103 116 101 113 109]
Срез 3: [65 78 77 79 80 81]
Срез 4: [65 110 77 111 112 81]
Результат 1: -1
Результат 2: 0
Результат 3: -1
Результат 4: 1
Результат 5: 1
Результат 6: 1
Результат 7: 0
Результат 8: -1
Результат 9: -1
Результат 10: 1
Результат 11: -1
Результат 12: 1
Результаты 13: 0