Это был ответ на комментарий, что APK открытый, а ось – нет.
Если к открытому бинарнику нужна открытая ось, то добро пожаловать собирать AOSP (или AOKP, я не счёл нужным подмечать разницу).
Я догадался. Животное не получает удовольствия от охоты потому, что у него нет РУЖЬЯ. Надо бежать, долго бежать, есть шанс получить копытом и так далее. В таких условиях любой будет охотиться только когда прижмёт голодом.
Я не берусь критиковать, так как сапожник не вправе судить выше сапога. Ваше мировоззрение отличается от моего, причём если начать критиковать, мне придётся защищать свою точку зрения, подкреплять ссылками и так далее. Так как я много с чем не согласен, это займёт время. Ваш стиль преподносить факты как абсолютную истину уже вызывает кучу подозрений. Вы сказали, что животные никогда не убивают просто так. Прямо таки никогда? раздва. Ну а про полушария это полная фигня, особенно про женскую логику и полушария. Савельев об этом постоянно напоминает при случае.
1. В Go сортировка делается через реализацию интерфейса (делаем хелпер). Вы описываете для своей коллекции структур следующие методы: Len, Swap, Less.
Затем sort.Sort(МояРеализация(коллекция)).
2. StringLess используется в реализации метода Less у хелпера handysort.Strings, в тестах он используется как Strings, потому что пакет тот же. Вы можете написать свой хелпер для сортировки сложных объектов, но везде вместо сравнения через "<" делаете сравнение через handysort.StringLess.
Ещё раз обращаю внимание, момент получился неочевидным:
// сортировка с применением лексиграфического сравнения строк
sort.Strings(set[b.N])
// сортировка с примененим нашего сравнения строк
sort.Sort(Strings(set[b.N])) // то же самое что и sort.Sort(handysort.Strings(set[b.N]))
А сам хелпер был в strings.go:
// Strings implements the sort interface, sorts an array
// of the alphanumeric strings in decreasing order.
type Strings []string
func (a Strings) Len() int { return len(a) }
func (a Strings) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a Strings) Less(i, j int) bool { return StringLess(a[i], a[j]) }
Отличный совет! Я побыстрому переписал на вариант со сравнением числовых полей по цифрам (с предварительным дополнением нулями при неравенстве длин, например 1 и 00002 сравниваются как 00001 и 00002, однако через срезы это медленно, пришлось орудовать индексами при проходе – пока идём по рунам из второй кучки, руны из первой подразумеваются нулями). Результаты бенчмарка меня порадовали (они стали даже лучше):
$ go test -bench=.
PASS
BenchmarkStringSort 500 3611235 ns/op
BenchmarkHandyStringSort 100 15821388 ns/op
ok github.com/Xlab/handysort 93.953s
Ещё и без привязки к uint64. «a01b001» < «a001b01», если что, проверил в OS X.
В войне миров Z семейка была очень послушная, я действительно порадовался за главного героя. Не помню, чтобы в каком-нибудь другом фильме про конец света дети так себя вели.
Если к открытому бинарнику нужна открытая ось, то добро пожаловать собирать AOSP (или AOKP, я не счёл нужным подмечать разницу).
Вот случай, когда слоны психанули и начали убивать носорогов: тык, хотя обычно живут в мире. Обстоятельства?
Котики theoatmeal.com/comics/cats_actually_kill
Тред ночных экспертов.
Len,Swap,Less.Затем
sort.Sort(МояРеализация(коллекция)).2.
StringLessиспользуется в реализации методаLessу хелпераhandysort.Strings, в тестах он используется какStrings, потому что пакет тот же. Вы можете написать свой хелпер для сортировки сложных объектов, но везде вместо сравнения через "<" делаете сравнение черезhandysort.StringLess.Ещё раз обращаю внимание, момент получился неочевидным:
А сам хелпер был в strings.go:
Ещё и без привязки к uint64. «a01b001» < «a001b01», если что, проверил в OS X.