Илья
так можно функцию сортировки в одном месте хранить
Denis
ну я и говорил об этом. хотя бы функцию саму попытаться универсальной сделать, в одном месте написать
Alexandr
Denis
но все равно решение такое себе. а если не 5 элементов а 6 понадобится выбирать - предлагаешь еще и константу общую завести?)
Илья
я просто не понимаю - на входе - слайс структур, на выходе - слайс структур, если далее идет работа с конркетными типами, то будет сборка слайса до этой функции, и type switch/type assert после, это ж треш какой-то
Alexandr
Интерфейс это отличное решение но меня смущают аксессоры, в го коде это будет странно выглядить. Интерфейс с 10 аксесорами, при рекомендация делать интерфейсы минимальными)
Denis
да это тоже не вариант, понятно
Denis
более того тут недавно в этом же чатике обсуждали проблему, что слайс интерфейсного типа не соотвествует слайсу структур, который этот интерфейс реализует
Denis
так что если func f(s []Interface{}) ты в нее не передаешь f([]struct{}) которые его реализуют предварительно не отконвертировав
Denis
если ты сделаешь функцию, которая на вход принимает слайс интерфейсов, то будешь вынужден каждый раз перед вызовом приводить свой слайс к этому интерфейсу
Alexandr
Это да, но приведение типа будет уже там где будет получен результат работы алгоритма
arisudesu
arisudesu
его можно реализовать методами
Denis
https://play.golang.org/p/P0nW-qPY_0n
arisudesu
надеюсь уже понятно к чему я веду.
Denis
я бы предложил сделать наоборот.
делаешь интерфейс который может получать топ5:
type Top5 interface {
GetTop5()
}
реализуешь его на всех слайсах нужных тебе структур
type some []struct{}
func (s some) GetTop5() {
// magic here
}
Denis
но один черт не понятно какой возвращаемый тип у GetTop5
Denis
т.е. делай не абстрактную функцию, которая принимает что угодно. лучше сделай у каждого слайса свою реализацию, а потом это в иинтерфейс объедини чтобы каждый слайс можно было абстрактно использовать. кажется правильным решением но чето не понятно с возвращаемым типом
Andrei 🦉
Alexandr
Denis
https://play.golang.org/p/kaAUkI4VHUU
Alexandr
Неужели это редкий кейс) и нет рекомендаций go way где нибудь в доках)
arisudesu
arisudesu
тебе надо задачу решать, а не придерживаться идиоматик го
Илья
если бы ты накидал какой-то пример, можно было бы чем-то помочь, а так, звучит как неправильный подход
Vladislav
Vladislav
Посмотрите на sort.
Daniel
Алексей
https://play.golang.org/p/tb573yibm6e как вывести только второе слово заглавными буквами ??
Alexandr
Сейчас доберусь до компа опишу подробные требования
Vladislav
Alexandr
Daniel
Ну - генериков-то нет...
Daniel
Если это на самом деле один тип - надо одним типом и представить
Daniel
Как вариант - это 10 типов, релизующих один интерфейс, но тут опять надо генератор геттеров писать...
Алексей
Vladislav
Не выходит !
-_- https://play.golang.org/p/uDMw427htp6
Илья
i == 1 ? :D
Васильев Виктор
Или без цикла)
Васильев Виктор
Зачем бегать по всему массиву)
Васильев Виктор
Ага :) Просто проверить длинну и выбрать элемент 1 toUpper и потом склеить
Алексей
А как проверить длина и склеить??
Илья
хороший вопрос, и вам в golang tour https://tour.golang.org/welcome/1
heavycharged
в чем суть задачи-то?
heavycharged
вывести второе слово из предложения заглавными буквами?
Алексей
Понятно,л спасибо!
heavycharged
https://play.golang.org/p/E2tvOLWaSar
heavycharged
лучше юзать strings.Fields
heavycharged
хотя, если вам нужно сохранить количество пробелов между словами, тогда Split подойдет
heavycharged
Fields разбивает по одному и более пробелу.
Васильев Виктор
Ну просто уточнений не было так что по умолчанию думается сохранить строку в первозданном виде
heavycharged
ну тогда нужно итерироваться по слайсу начиная с первого элемента, и выше, проверяя, не является ли элемент слайса пустой строкой, так как в задаче имеется ввиду второе слово. но это уже тошнотик мод.
Алексей
Алексей
Мерль
Кто сегодня будет на митапе?
Васильев Виктор
в дефолт сити?
Altay unstppbl
А давайте 17го :)
Altay unstppbl
15,16 на phdays идёт кто?
Yura
Сорри за нубский вопрос: чем сейчас сообщество версии библиотек менеджат? Требуется кардинальная переработка api в либе. Под что подстраиваться, чтобы меньше боли пользователям было? т.е. чтобы и старую версию могли использовать.
Daniel
вопрос не ясен
Васильев Виктор
гит версии
Васильев Виктор
или теги
Yura
вопрос не ясен
Есть либа. Её уже используют.
Нужно сделать v2 с не совместимым api. Но чтобы пользователи текущей версии могли её продолжать использовать с минимальным напрягом.
На что следует ориентироваться? Считать, что все пользуются dep и морозят коммиты? Сделать бранч v1? Или воспользоваться gopkg.in ?
Васильев Виктор
Или воттак
Васильев Виктор
http://labix.org/gopkg.in
Васильев Виктор
Так приятнее
Daniel
Васильев Виктор
ну собственно gopkg.in использует и бранчи так что можно совмещать)
Yura
бранч, конечно
Бранч просто (с расчётом на dep)? Или связаться с gopkg.in ?
Васильев Виктор