Go реализация sort.IntSlice () - PullRequest
0 голосов
/ 12 июля 2020

Я искал, как отменить сортировку массива Go:

sort.Sort(sort.Reverse(sort.IntSlice(s))) // s is the slice of ints

Я проверил пакет sort для документации go по адресу https://godoc.org/sort

Я вижу, что существует тип IntSlice, но нет метода IntSlice () для пакета сортировки

Может кто-нибудь объяснить, как реализован IntSlice () или почему его нет в пакете сортировки?

1 Ответ

0 голосов
/ 12 июля 2020

Итак, при написании этого вопроса я посмотрел на исходный код типа IntSlice и понял, что IntSlice () не является функцией sort pkg, а скорее это псевдоним для [] int, поэтому sort.IntSlice (s) превращает slice в type IntSlice.

Причина, по которой нам нужно преобразовать [] int в тип IntSlice, заключается в том, что sort.Reverse () требует типа интерфейса и должен реализовывать Len (), Swap (), Less () который [] int не реализует.

Это также напоминает мне о другом моменте, который Донован и Керниган написали относительно интерфейсов: мы не можем изменять конкретные типы, но мы можем расширять функциональность через интерфейсы, и я понял, что это пример b / c [] int - это базовый тип как часть Go language spe c, но расширенное поведение sort pkg через интерфейс интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...