Artem
где связь то?
snip
где связь то?
Качественный в го - говей и работает корректно
snip
Данный код работает корректно но не говэй и нет гарантий что он не поломается при новой версии го
snip
Вот и вся связь
Artem
ну первое, что такое go way? я знаю только про effective go, в котором только в 1 месте упоминается readable
snip
Простота и читабельность
snip
Есть ещё всякие факторы, но их немного
Artem
а можешь цитату скинуть или доклад какой-нибудь, мне интересно откуда все эти мысли пошли
snip
Есть выступление пайка почему го взлетел, вот там он примерно описывает как они это видят
snip
А вообще про говей и различные моменты почему в го так а не иначе много достаточно выступлений пайка
snip
Есть другие умные мужи пытающинся донести идеи го, но я не вспомню сейчас по памяти ссылок на доклады
Artem
почему так или иначе это одно, а почему такой код (которого полно в стдлиб) не go way, это другой вопрос
snip
почему так или иначе это одно, а почему такой код (которого полно в стдлиб) не go way, это другой вопрос
В го есть ансейф и его можно использовать если очень надо, но мы же говорим о "в го считается качественным кодом"
snip
А на счёт стдлиб там есть нехороший код, сейчас меньше, было больше и был прям откровенный говнокод, но что это меняет?
Artem
это какая-то двуличность, топим за одно, а делаем другое
Илья
почему так или иначе это одно, а почему такой код (которого полно в стдлиб) не go way, это другой вопрос
такие трюки в стдлиб существуют для того, чтобы не просаживаться в перфомансе, там есть несколько трюков для "обамана" экскейп анализа, пока не сделали его умнее
snip
это какая-то двуличность, топим за одно, а делаем другое
Нет. Я не видел идеально реализованных проектов, всегда в той или иной степени - компромиссы, но при этом стремиться к хорошему это правильно
Илья
Этот "обман" та еще хрень, bytes.Buffer уже наобманывался
в стд "обман" чаще всего работал, и его выпиливали, когда завозили оптимизации (string<->[]byte)
Илья
а то получается вот так
Илья
https://github.com/mailru/easyjson/blob/3fdea8d05856a0c8df22ed4bc71b3219245e4485/jlexer/bytestostr.go
David
Подскажите, пожалуйста, как работать с import’ами, если использую приватный репозиторий и разрабатываю в докере?
David
Andrei 🦉
Подскажите, пожалуйста, как работать с import’ами, если использую приватный репозиторий и разрабатываю в докере?
зависимость из приватного репозитория настраивается по разному, в зависимости от используемого пакетного менеджера
David
dep
Andrei 🦉
dep
https://github.com/golang/dep/blob/master/docs/FAQ.md#how-do-i-get-dep-to-consume-private-git-repos-using-a-github-token
Andrei 🦉
с любым гит репозиторием
Илья
dep
я просто руками указывал [[override]] name = "my_private_repo" source = "ssh://git@my_private_repo.git" branch = "master"
Илья
в Gopkg.lock
Илья
или constraint
Илья
тогда можно без токенов жить
David
Окей. Что если у меня есть приватный репозиторий с проектом, я хочу разрабатывать локально в докере и потом пушить в гит. Как подключать просто напросто соседние папки? Нужно подключаться все равно к приватному репозиторию?
Alexey
Ну, полетели: https://github.com/gosh-lang/gosh
David
пулите репу, монтируете папку в докер, изменения пушите снаружи
То есть при каждом новом package мне нужно пушить в гит?
саша
Го же сам по себе медленный, зачем на нем ещё интерпретатор другого языка писать?
Daniel
в каком смысле go медленный?
Alexey
Потому что скорость – не всё
Илья
То есть при каждом новом package мне нужно пушить в гит?
https://medium.com/statuscode/golang-docker-for-development-and-production-ce3ad4e69673
Daniel
вы чего хотите, собственно?
Илья
Я видел, не особо статья
тогда вам стоит просто почитать, что такое докер
Илья
вопросов по го я не вижу
David
Я сделал реп для разработки, но проблема была, что пакеты было не понятно как подключать. Оказывается всегда нужно будет комитить в репозиторий, чтобы мог нормально писать код
David
Неужели нельзя настроить absolute path на root проекта и подключать от туда пакеты?
Artem
просто не нужно кодить в докере
Artem
блин. а мб тот слитый код аэрофлота на самом деле чья-то иде, парень просто кодил в докере?
Roman
Я переписал пункт 1.1.1. для лучшего понимания проблемы: https://github.com/romshark/Go-2-Proposal---Immutability#111-ambiguous-code-and-dangerous-bugs
invariance
Ребяты, есть return type у функции:*typeName, как мне конструкцию execParams := getSpecParams() return &execParams упростить?
invariance
ну типо в одну строку сделать без лишней переменной
Andrei 🦉
вроде можно сделать return &(getSpecParams())
Илья
нельзя
Илья
можно сделать функцию обертку, которая вернт typeName
Andrei 🦉
ну значит нельзя, это go way, страдай
.
Подскажите, в чем проблема? Структура имплементирует интерфейс, но при передачи ее в функцию которая принимает параметром этот интерефейс, выдает что нельзя так
.
Если передать не просто db, а указатель &db, то все ок
.
Почему так?
Aleksandr
Все верно, надо указатель передавать, если в сигнатуре интерфейс
Roman
Если передать не просто db, а указатель &db, то все ок
потому-что скорее всего не T у вас имплементирует интерфейс а *T, а это такие разные типы
.
Кстати вот есть репозиторий с методами обращения к БД
.
Кому тут правильнее указывать эти методы, указателю на репу, или просто репе?
.
типа func (db Database) GetUserById(id int) (models.User, error) или же func (db *Database) GetUserById(id int) (models.User, error)
.
в данном случае менять никак не надо
Dk
Простите. Если я в пакете делаю func init() { var X int }, то экспортировать я X смогу или он в области видимости функции только?
Dk
Ну вот хочу в инициализации прочитать json в структуру, чтобы потом экспортировать эту структуру.
Dk
Объявить переменную внешне и анмаршалить по указателю?
Dk
Пасиб
Dk
Да-да, всё верно
Artem
Parent *User ?
Artem
да
Artem
без нее идет ошибка инициализации он выделяет память на структуру, внутри такая же, опять выделяет, потом опять и так до конца памяти. *User это 8 байт - фиксированный размер