Size: a a a

2020 May 03

p

pragus in Go-go!
Daniel Podolsky
спасибо, кэп!
С другой стороны, я вот вижу как иногда рассказывают неофитам из js/python/ruby какой go быстрый и как всё хорошо, но никто не рассказывает про отсутствие библиотек и порождаемые этим проблемы :) взять ту же kafka, например
источник

ЛА

Локоть Анатолий... in Go-go!
Robert Egorov
кому то конечно uber fx (? так вроде) норм. Но нам чот не зашло.
Мне нравится uber/dig.
Хотя не без минусов тоже.
источник

ЛА

Локоть Анатолий... in Go-go!
Vadim Inshakov
@onokonem @antonikucherov ок, но что если вы пишете блокэксплорер для ноды эфира, и там ну никак ты эту ноду не замокаешь, а всё, что делают твои функции - это дергают API ноды; тогда что, вообще без юнитов быть? или юнитами покрывать простейшие хелперы, которые не сильно связаны с основной функциональностью?
А что именно в вашем блокэкплорере своего? Там же ведь все данные из ноды приходят.
источник

p

pragus in Go-go!
Roman Sharkov
поэтому я и написал “условный” 🙂

на C/C++ точно можно, насчёт Питона я лично не знаю, но скорее всего да, и возможно и проще
И снова вопрос усилий :) на go тоже можно :)
источник

VI

Vadim Inshakov in Go-go!
Локоть Анатолий
А что именно в вашем блокэкплорере своего? Там же ведь все данные из ноды приходят.
да ничего практически своего: парсинг, работа с хранилищем блоков (базой)
источник

RS

Roman Sharkov in Go-go!
pragus
И снова вопрос усилий :) на go тоже можно :)
можно, но я бы наверное не делал этого на Go, думаю подводные камни слишком устрыми окажутся
источник

p

pragus in Go-go!
Roman Sharkov
слышал о каких-то там компиляторах которые Haskell параллелят на GPU, но ничего конкретно об этом не знаю.. предполагаю что там подводных камней как в океане
llvm-based языки в теории могут, хотя бы потому что cuda toolkit базируется на llvm
источник

ЛА

Локоть Анатолий... in Go-go!
Vadim Inshakov
да ничего практически своего: парсинг, работа с хранилищем блоков (базой)
Тогда почему не можете замокать клиента его api?

Как это можно сделать - выносите методы клиента, который есть в интерфейс, дальше по интерфейсу генерите мок, например с помощью либы mockery https://github.com/vektra/mockery

В вашем коде переходите от использования клиента к использованию интерфейса.
Пишете тест, в котором вместо клиента подставляете сгенерированный выше мок. Успех.
источник

VI

Vadim Inshakov in Go-go!
Локоть Анатолий
Тогда почему не можете замокать клиента его api?

Как это можно сделать - выносите методы клиента, который есть в интерфейс, дальше по интерфейсу генерите мок, например с помощью либы mockery https://github.com/vektra/mockery

В вашем коде переходите от использования клиента к использованию интерфейса.
Пишете тест, в котором вместо клиента подставляете сгенерированный выше мок. Успех.
да, спасибо, тоже об этом подумал, надо заменить на интерфейсы все виды клиентов и тогда получится замокать
источник

AK

Anton Kucherov in Go-go!
Локоть Анатолий
Тогда почему не можете замокать клиента его api?

Как это можно сделать - выносите методы клиента, который есть в интерфейс, дальше по интерфейсу генерите мок, например с помощью либы mockery https://github.com/vektra/mockery

В вашем коде переходите от использования клиента к использованию интерфейса.
Пишете тест, в котором вместо клиента подставляете сгенерированный выше мок. Успех.
Ух ты, там свежий тикет наконец... https://github.com/vektra/mockery/issues/256
источник

P

Polkota in Go-go!
Roman Sharkov
где код?
источник

P

Polkota in Go-go!
Уже неделю пытаюсь понять, почему не вижу на бенчах аллокаций памяти и не вижу разницы между передачей по адресу или копией
источник

P

Polkota in Go-go!
Кто-нибудь знает?)
источник

DP

Daniel Podolsky in Go-go!
так а почему должна быть?
источник

P

Polkota in Go-go!
Дак должна создаваться же копия на каждый вызов функции в тесте.
источник

P

Polkota in Go-go!
И почему вообще нет аллокаций. Я создаю в памяти же структуру, выделяю память)
источник

DP

Daniel Podolsky in Go-go!
копия, скорее всего, создается на стеке, в аллокации не попадает
источник

MN

Mykyta Nikitenko in Go-go!
У структуры поля должны быть эаспортированы
источник

MN

Mykyta Nikitenko in Go-go!
В го все типы,поля и функции считаются экспортированые если начинаются с заглавной буквы (как public и private в жаве, шарпе, тайпскрипте и т.п.)
источник

@

@Sehat in Go-go!
Всем привет, начал изучать golang, задался таким вопросом. Насколько вообще нужен докер для использования веб-сервисов написанных на го?
источник