🄽🄸🄺🄸🅃🄰
Anonymous
🄽🄸🄺🄸🅃🄰
А поподробней?
если возник такой вопрос, то приходят в голову два варианта. Либо вы переписываете что-то на Го, либо только учитесь использовать Го. В обоих вариантах вы с ходу не заложите идеальной структуры хранения.
Подумайте заранее какие запчасти вам нужны в нескольких сервисах и вынесите их в отдельные пакеты.
🄽🄸🄺🄸🅃🄰
В целом водопад - waterfall - подход итеративного развития идеи
🄽🄸🄺🄸🅃🄰
или разработки
Anonymous
🄽🄸🄺🄸🅃🄰
чтобы компилилось, запускалось
🄽🄸🄺🄸🅃🄰
потом усложнять будете, и от задачи обдумаете как луче разнести
Anonymous
Мне просто подумалось када много всяких тырфейсов, структур, методов, народ ведь как-то хранит это, возможно структуры с методами отдельно, тырфесы отдельно?
🄽🄸🄺🄸🅃🄰
🄽🄸🄺🄸🅃🄰
посмотрите как там организован код
Slava
Кстати тоже интересует такой вопрос, тоже новичок. Встречал и два подхода: в одном все разбивают на разные пакеты и складывают в директорию pkg, в другом просто "традиционно" раскидывают все по папочкам, но я так понимаю это антипаттерн
🄽🄸🄺🄸🅃🄰
вариантов и подходов много
Anonymous
Да, я уже подумал об этом, спасибо.
🄽🄸🄺🄸🅃🄰
🄽🄸🄺🄸🅃🄰
но я понимаю зачем и почему я это сделаю, и это точно не ради самой папочки
🄽🄸🄺🄸🅃🄰
сначала все-таки задача, потом ее решение
🄽🄸🄺🄸🅃🄰
успехов в бою) го рулз)
Anonymous
Короч предлагаю метод какашки - сваливаешь весь код в одну кучу, потом если понадобится - рефакторишь :)
Ivan
Всем привет! Подскажите пожалуйста, как можно лучше решить эту проблему:
Есть такой почти псевдо код (проверки ес-но на err есть, для примера убрал):
var positionChange actions.PositionChange // это структура
json.Unmarshal(data, &positionChange)
var orderCreated actions.OrderCreated // это структура
json.Unmarshal(data, &orderCreated)
и такого копипаста ввиде json.Unmarshall.... err != nil предвидится очень много. Как можно копипаст свести к минимому, учитывая что данные структуры унаследуются от одной общей.
Как можно красивее код написать? В Джаве прям напрашиваются генерики. А в го каким путём лучше пойти тогда?
Daniel
путем копипасты. а если их реально много - путем кодогенерации
Daniel
я вот с помощью text/template генерирую, а исходник описываю в yaml.
Daniel
но это когда у меня 400 структур с полностью однотипной обработкой
Ivan
жесть)
ainu
у easyjson красиво сделана кодогенерация
ainu
в отдельный файл помещается, добавляет методы
ainu
можно там чтото почерпнуть
Daniel
но готовых генераторов нет - да и откуда им взяться
Мерль
Недавно для себя открыл
Daniel
это, конечно, совсем не то, чего хочется.
Daniel
хочется темплейтов, хотя в том виде, в котором они есть в яве, и генератора кода на их базе
Мерль
Daniel
но эта задача, насколько я понимаю, не решается на уровне текста, тут надо язык понимать
Мерль
я уже говорил, но повторюсь, я больше страдаю от отсутствия типов-сумм (
Daniel
да есть от чего пострадать, так-то :)
Dmitry
Где посмотреть, как устроена мапа внутри го? Я имею в виду исходный код
Daniel
в гугле
Quet
Dmitry
да, я нашел уже
Dmitry
спасибо
Slach
https://play.golang.org/p/JAf0H8qgxIl
Народ, а вот кто как бы реструктурировал такой код?
покритикуйте пожалуйста
с одной стороны можно конечно декомпозировать на несколько функций, но тогда придется return err делать в этих функциях и делать return чтобы сработал defer в основной
=) я понимаю что CH не транзакционный но я просто хочу подобный подход применить для транзакционности в PgSQL и MySQL в дальнейшем
Chebyrash
Друзья, насколько правильно данное решение - мап функций с ресивером
https://play.golang.org/p/zGcPYPkeNbx
Daniel
нормально, только непонятно, зачем
Chebyrash
Мне удобно хранить функции в мапе чтобы по string key их вызывать
Daniel
чтобы что?
Daniel
ну вот реально - чтобы что?
Slach
у тебя этот string key откуда то снаружи передается?
Chebyrash
Chebyrash
Daniel
Daniel
и проблемы будут отловлены при компиляции, а не при работе
Daniel
медленнее
Chebyrash
Поясните пожалуйста почему, если не сложно.
Anonymous
инструкция в коде скомпилирована, а залезть в мапу - это динамисческий доступ
Chebyrash
Anonymous
да, он при этом не лезет в переменную типа мап
Anonymous
вряд ли, это в коде выглядит коротко
Anonymous
Хм, чот фигня какая-то, ЧЯДНТ?
gox -build-toolchain
Программа 'gox' на данный момент не установлена. Вы можете установить её, выполнив:
sudo apt install gox
Oleksii
Oleksii
Интересно, какие значения будут
Slach
Да
снаружи в смысле за пределы процесса?
Chebyrash
Что быстрее - свитч на 100 кейсов или мапа с функциями
Anonymous
существенной разницы быть не должно
Anonymous
но немножко выйдет вперед свитч
Chebyrash
Aleksandr
Daniel
потому, что смещение для джампа задается статически, и, скорее всего, соответствующий код будет в кеше
Slach
Anonymous
$GOPATH/bin есть в $PATH ?
go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/marlik/go"
GORACE=""
GOROOT="/usr/lib/go-1.9"
GOTOOLDIR="/usr/lib/go-1.9/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build418155158=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"