Тип sort.StringSlice

Тип sort.StringSlice является оберткой над []string, которая реализует интерфейс sort.Interface. Это позволяет использовать все функции пакета sort для работы со срезами строк: сортировку, поиск, проверку на отсортированность. Тип предоставляет методы Sort для сортировки, Search для бинарного поиска, а также методы Len, Less, Swap для реализации интерфейса.

Синтаксис

gotype StringSlice []string

Пример

Давайте создадим срез строк и отсортируем его с помощью метода Sort:

gopackage main

import (
  "fmt"
  "sort"
)

func main() {
  slice := sort.StringSlice{"zebra", "apple", "banana", "dog"}
  slice.Sort()
  fmt.Println(slice)
}

Результат выполнения кода:

go[apple banana dog zebra]

Пример

Давайте выполним бинарный поиск элемента в отсортированном срезе с помощью метода Search. Метод возвращает индекс элемента, если он найден, или индекс места для вставки, если элемент отсутствует:

gopackage main

import (
  "fmt"
  "sort"
)

func main() {
  slice := sort.StringSlice{"apple", "banana", "dog", "zebra"}
  index := slice.Search("banana")
  fmt.Println(index)
}

Результат выполнения кода:

go1

Пример

Давайте проверим, отсортирован ли срез с помощью функции sort.IsSorted, передав в нее срез типа sort.StringSlice:

gopackage main

import (
  "fmt"
  "sort"
)

func main() {
  slice1 := sort.StringSlice{"apple", "banana", "dog"}
  slice2 := sort.StringSlice{"zebra", "apple", "banana"}

  fmt.Println(sort.IsSorted(slice1))
  fmt.Println(sort.IsSorted(slice2))
}

Результат выполнения кода:

gotrue
false

Смотрите также

  • тип sort.IntSlice,
    который реализует сортировку для срезов целых чисел
  • тип sort.Float64Slice,
    который реализует сортировку для срезов чисел с плавающей точкой
  • функцию sort.Strings,
    которая сортирует срез строк в порядке возрастания
  • функцию sort.SearchStrings,
    которая выполняет бинарный поиск строки в отсортированном срезе