Anonymous
parseuint то на что?
Он выдает uint64
Мерль
Он выдает uint64
Проверяй на переполнение и конвертируй в uint32 Или используй fmt.Sscanf
V
там даже в доке на либу написано
V
пиши аргументом 32 и конвертируй
V
а потом приведение без потери данных
V
все прекрасно
Anonymous
Окей, спс
Alexandr
Как сделать полиморфизм что ли?)))
Полиморфизм, полиморфизмом) тут дело в удобстве и лаконичности
arisudesu
Интерфейс.
arisudesu
Не пустой, а с аксессорами к нужным полям
Alexandr
вот это первое и приходит в голову, ну фигачить гетеры и сеттеры для 10+ полей не очень хотелось, думал может есть более красивый вариант
arisudesu
Все нормальные редакторы кода умеют генерить для поля пару аксессоров
arisudesu
Так что дело пяти минут
Alexandr
ну вроде как для go way не типично фигачить геттеры и сеттеры)
Alexandr
или я заблуждаюсь?)
arisudesu
Лучше делай.
arisudesu
Сейчас на меня накинутся что это не идиоматик го, ага))
arisudesu
Тем более что у тебя ситуация вполне определённая.
arisudesu
Такая что они нужны
arisudesu
вообще у меня в последние дни знатно подгорает, что в голанге охуенные интерфейсы, которые работают по совпадению с типами, а вот пользоваться ими почему-то не поощряется
arisudesu
т.е. делать мелкие интерфейсы и аксессоры вместо прямого доступа к полям
Alexandr
да я тоже к этому пришел, что другого варианта нет когда уже типы с которыми работать готовы. Если с ноля все писать то можно было заменить интерфейс композицией, как выше предложили
Alexandr
но у меня придется переписывать теги, типы и многое, поэтому придется через аксесоры
Nikita
ну вроде как для go way не типично фигачить геттеры и сеттеры)
Покажи код, а мы тебе скажем как отрефакторить, а то это гадание на кофейной гуще
Alexandr
Покажи код, а мы тебе скажем как отрефакторить, а то это гадание на кофейной гуще
спасибо!) ну вариант уже выбран) если будет чтото интересное в дальнейшем, то уже отпишусь с кодом)
Alexandr
изначально вопрос был таков: Коллеги, не подскажите, как в го будет лучше гарантировать набор полей получаемой в аргументах структуры? Итерфейс с набором геттеров и сеттеров?
Alexandr
мне больше понравился подход предолженный со встраиванием, но если делать через этот вариант, то надо править теги и создание структур
Alexandr
а с интерфейсом содержащим геттеры и сеттеры, все сводится к добавлению методов
Artem
было такое предложение, там как раз этот кейс описывается https://github.com/golang/go/issues/23796
Alexandr
)))) а на входе пустой интерфейс принимать))
Алексей
Добрый день,как сделать каждое второе слово в абзаце заглавным ?????
Артур
как пробовал?
MOS2502
Коллеги, кто знает, как в exelize сделать выпадающий список в ячейке? Перерыл всю документацию, но так и не нашел...
Aleksey
Коллеги, кто знает, как в exelize сделать выпадающий список в ячейке? Перерыл всю документацию, но так и не нашел...
По идее там должны быть данные типа: {'validate': 'list', 'source': '=$E$4:$G$4'} или {'validate': 'list', 'source': ['open', 'high', 'close']} Можно попробовать через все SetCell... может даже через SetCellStyle
Alexandr
А зачем?
Что зачем?) нужно для некой ротации неких сущностей, в зависимости от их параметров
Alexandr
Некий алгоритм по приоритетной выдаче нужных объектов
Daniel
Зачем нужно гарантировать набор полей?
Диёр
как с godoc сгенерировать доку для проекта, который юзает gb
Alexandr
Потому что в зависимости от их значений будет приниматься решение по выдаче
Alexandr
Понимаю что вы клоните к интерфейсам и гарантии наличия методов
Daniel
Я клоню к тому, что, если на входе тип - у него есть его поля, гарантировать тут нечего
Alexandr
Там несколько типов может быть
Илья
если есть некий инпут, то можно на каждом типе реализовать конкретную реализацию заполнения из этого инпута, и принимать интерфейс с 1 функцией, которая заполняет структуру
Daniel
Там несколько типов может быть
Не может. В go - не может
arisudesu
может.
arisudesu
полиморфизм обычный.
Daniel
Пример в студию
Alexandr
Не может. В go - не может
Эта функция должна производить ротацию элементов разных типов которые уже реализованы. Понятно что аргумент может быть только одного типа. Тут вариант использовать встраивание типа и ждать его, но в моем случае это потребует рефакторинга большой части кода
Daniel
И?
Alexandr
И?
Это призыв делай рефакторинга всего ну будет не костыльно зато?)
arisudesu
io.Writer
arisudesu
io.Closer
arisudesu
Error
Andrey
это интерфейсы
arisudesu
Stringer
Daniel
Это интерфейсы
Daniel
У них нет полей
arisudesu
интерфейсы реализует любой подходящий тип
Daniel
Но - без полей
Илья
интерфейсы описывают поведение, а не состояние
Alexandr
Интерфейс он на то так и назван)
Daniel
Это призыв делай рефакторинга всего ну будет не костыльно зато?)
Я пока задачу не понял. Как вы разные типу на вход передавать хотите?
Alexandr
Если подробнее, то есть функция с алгоритмом внутри, в неё надо передать слайс с о структурами, а вернётся другой слайс с тем же типом структур, но останется топ5 по определённым параметрам
Alexandr
Но опять же эта функция должна быть универсальной.
Илья
sort.Slice() [:5]?
Denis
дженериков у нас нет так что прямо совсем универсально не получится
Илья
достаточно универсально, я считаю
Denis
но отсортировать и взять пять элементов да
Alexandr
Интерфейс тоже универсально, но надо аксессоры писать на используемые поля.
Denis
универсальной можно в таком случае сделать функцию, которая отбирает топ пять
Илья
у вас будет масса проблем, при такой "универсализации", стоит сразу переделывать
Denis
хотя нет, это я чушь написал, в общем-то тоже самое получается
Илья
[]interface придется собирать руками, придется типизировать слайсы структур