Как стать автором
Обновить

Комментарии 16

Скорее, статья довольно очевидная))
Описанный подход используется и без привязки конкретно к Go
Про подход — наверное, да… я, кроме go, хорошо знаком только с python, и в нем есть такая общепринятая практика `if __name__ == '__main__"`… особенность go в том, что в нем недостаточно превратить функцию main в «однострочник» — все содержимое пакета main недоступно для импорта
>> Тем не менее, вы не сможете протестировать функцию, которая вызывает os.Exit
Есть несколько рецептов по тестированию os.Exit, например, с использованием exec.Command
Если честно, не понял… с exec.Command вы будете вызывать бинарник целиком; при этом вам надо как-то заставить его выполнить функцию, которая может вызвать os.Exit() и проверить код возврата. Здесь речь идет о
go test
и тестировании отдельных функций — запуском бинарника вы в этом случае не управляете. Да и это уже поведенческое тестирование, а не модульное…
Один из рецептов и приведен в статье. Можно ссылку, где почитать о других рецептах?
Ну, и костылище… :-)
Да, насчет
запуском бинарника вы в этом случае не управляете

я погорячился. Можно, конечно, и так тестировать.
ИМХО, у Финча вариант изящнее, а вариант Герранда более трудоемкий.
Спасибо за ссылки, первую положил в закладки — вдруг пригодится…
такое даже переводить не стоит
<sarcasm>
и вам спасибо за содержательную критику
</sarcasm>
Пришлите то, что стоит перевести. Все будут вам благодарны
Если комму-то интересна эта тема, могу попробовать родить статью о том как это сделано у нас (около 15 проектов с общим кодом).

Сколько ни читаю статей про то как легко реюзать код го, никак не понимаю. Как можно реюзать код на языке который не поддерживает дженерики? Из механизмов реюза есть только функции. Типы реюзать не светит. Вот написал я лру кэш для картинок, захотел хранить в нем что-то другое, либо вся типобезопасность лесом, либо одно из двух...

Интерфейсы же. Делайте сразу кэш не только картинок, а чего-то, удовлетворяющего интерфейсу.

Интерфейсы не типобезопасны.

Обоснуйте. Если что — я не пустой интерфейс interface{} на вход предлагаю, а удовлетворяющую некоему интерфейсу структуру.

Что обосновать? Сортировку можно извернуться написать не имея ссылок на данные, но когда у тебя смысл в том что ты пишешь какой-то контейнер с данными или устройство ввода вывода то так не извернуться, нужны реальные ссылки на данные, а дженериков нет.

Обосновать своё утверждение про типонебезопасность интерфейсов.
Если что-то не получается абстрагировать, спрятав за интерфейс, то, возможно, не надо впрягать в одну телегу коня и трепетную лань?
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.