
Michael
24.01.2018
16:11:51
метод это функция с ресивером в Гоу

Aleksandr
24.01.2018
16:14:58

Vladislav
24.01.2018
16:30:12

Michael
24.01.2018
16:32:16

Google

tsov
24.01.2018
16:32:42
Hello, 中国! - The Go Blog
https://blog.golang.org/hello-china
у китайцев появился официальный Го

Michael
24.01.2018
16:33:35
можно начинать учить язык Чайны

tsov
24.01.2018
16:35:37
и ставить gogs

Aleksander
24.01.2018
16:36:44
Подскажите чем вы пользуетесь в компании для документирования функций и api?

Aleksandr
24.01.2018
16:36:55

Michael
24.01.2018
16:38:30
кунгфу теоретиков)

Aleksander
24.01.2018
16:39:24
swagger
Это видели . А аналоги есть ? Неплохие
А confluence используете ?

Michael
24.01.2018
16:40:44

Aleksander
24.01.2018
16:49:51

Google

Vladislav
24.01.2018
16:50:37
фабричная функция (не ооп)
Ну это на самом деле неважно. Т.к. в коммьюнити принято определенные функции называть конструкторами. И нет никакого смысла это оспаривать и прививать другим. (Учитывайте, что я имею именно функции вида NewType. Из этого имени следует, что назначение этой функции примерно соответсвует конструкторам.)

Michael
24.01.2018
16:50:53

Aleksander
24.01.2018
16:51:29

Michael
24.01.2018
16:52:02

Aleksander
24.01.2018
16:52:19

Aleksandr
24.01.2018
16:53:43

Vladislav
24.01.2018
16:54:55

Michael
24.01.2018
16:55:17
т.е. NewTypename из Go вполне соответствует
фабрика не обязательно возвращает один и тот же конкретный тип

Aleksandr
24.01.2018
16:57:28

meehalkoff✪
24.01.2018
16:59:50
gc?))

Michael
24.01.2018
17:01:33
gc?))
та вроде Банда Четырёх говорит, что an existing object might be reused

Aleksandr
24.01.2018
17:02:23

meehalkoff✪
24.01.2018
17:02:58

Vladislav
24.01.2018
17:06:35
И так то она производит новое.
Только не всегда.

Aleksandr
24.01.2018
17:08:17
ничего страшного

Google

andrew
24.01.2018
17:08:20
фабрика и пул - разные паттерны
https://ru.wikipedia.org/wiki/Порождающие_шаблоны_проектирования

Michael
24.01.2018
17:24:57
в описании fabric method банда 4 часто употребляет понятие и слово interface, по хорошему что обозвать гошную NewTypename() *Typename вот этими словами fabric method, она должна возвращать интерфейс, т.к. в ориг книге примеры на С++ , то там используется абстрактный класс
ещё сами они fabric method называют так virtual constructor
Если оно крякает как утка, плавает как утка и выглядит как утка - то можно это обозвать конструктором

tsov
24.01.2018
17:41:53
конструктор, т.к. конструирует новый объект. а фабрика - это кому то моча ударила в свое время, совсем не нужная абстракция. Массив создаваемых объектов с методом добавления нового - типа вот фабрика

Alexander
24.01.2018
17:45:21
Фабрикой обычно называют что-то, что может создавать _разные_ объекты в зависимости от параметров. Эти разные объекты обычно реализуют какой-то общий интерфейс. Например функция СделайГеометрическуюФигуру(тип) может вернуть Квадрат или Прямоугольник. Конструктор же всегда возвращает один строго определенный тип объекта (если возвращает вообще).

Aleksandr
24.01.2018
17:47:26

Alexander
24.01.2018
17:49:23
Это абстрактная фабрика
Ну я бы не стал уже углубляться в различия между фабрикой, фабричным методом и еще какими-то вариациями. Фабрика может быть не абстрактной и возвращать разные типы объектов.

Aleksandr
24.01.2018
17:49:55

Michael
24.01.2018
18:04:36

Aleksandr
24.01.2018
18:06:53
gof?

Shreyner
24.01.2018
18:25:58
Всем привет. Задался вопросом, как правильно организовать свой код web приложения или просто программы на Go. Можете посоветовать какую-нибудь литературу, статьи, каналы? Репозитории на Github с примерами
Спасибо.

@b6ed7
24.01.2018
18:31:43

Michael
24.01.2018
18:34:16
Посмотри код стандартных пакетов на гитхабе

Shreyner
24.01.2018
18:35:19

Max
24.01.2018
18:52:23
Загугли effective go
Там мало что написано с точки зрения организации проекта.
Пример более общего layouta - https://github.com/golang-standards/project-layout
Но и он не решает всех проблем

Google

Shreyner
24.01.2018
18:53:30

Max
24.01.2018
18:57:30
Я так и не смог придумать красивое решение для организации проекта. В большинстве фреймворков (на других языках) примернотакая:
├── controllers
| └── controller_a.go
| └── test_controller_a.go
├── cmd
| └── server
| └── main.go
└── templates
Если запускать сервис - всё ок. Шаблоны загружаются. А вот если запускать тесты - "go test ./...", то корневой становится папка с файлом тестов, и тест контроллера не видит шаблонов.

Andrew
24.01.2018
18:59:29

Gleb
24.01.2018
22:57:52
Привет, народ) Только начал копать Go, есть какие-нибудь проекты по транспилированию какого-нибудь расширенного синтаксиса в Go? Нашёл только всякие поделки по типу Go -> JS, не более. Хочется хотя бы классы и прочее OOP плюшки иметь. Не надо мне рассказывать, что и так нормально жить можно. Жить можно как угодно, но DX от такого языка будет достаточно уныл. Сам раньше писал много лет на C++, а потом перескочил в JS и вот как-то не получается из JS-а вырваться. Основной бум скорости развития JS получил с появлением нормального транспайлера в виде Babel и возможности быстро и просто налепить плагин для твоего пропосала в стандарт языка. Что-то мне слабо вериться, что в Go комьюнити такого не напилили. Киданите в меня ссылочкой)

Vladislav
24.01.2018
23:06:11
А вообще странно полагать, что сообщество пошло по пути js. Как будто других путей нет.


Gleb
24.01.2018
23:17:05
Спасибо, изучу) Понятно, что путей много, просто я не видел ни в одном языке за много лет такого бурного развития и выработки самых лучших решений всем миром. У нас вон огромный кусок в виде статической типизации тем же Flow привнесли, а почти тут жа запилили babel plugin, который транспайлит ваши инструкции "статической" типизации в runtime проверки и ещё и в runtime'е начинает проверять. Если бы такое было в Go комьюнити, то как мне кажется, об отсутвии OOP в Go я бы даже и не услышал.

Admin
ERROR: S client not available

Zaur
24.01.2018
23:20:40
js сообществу js приходится воспринимать как данность, от него никуда не уйти
golang изначально осознанно создавался под конкретные задачи. Зачем же его как-то расширять, если всё, что сочли нужным, уже в него добавили
есть конечно некоторые вещи, которые в этой группе нельзя называть ? , но это надо на уровне компилятора добавлять

Vladislav
24.01.2018
23:24:23

Gleb
24.01.2018
23:29:16
Самые лучшие решения, ага. Тысячи либ для одной функции.
Я говорю не про либы, я говорю про фичи самого синтаксиса языка. Тот же pipeline operator из Erlang/Elexir/etc " |> " можно внести путём тупого и прямоленейного преобразования в обычный синтаксис вложенного вызова функций. Синтаксический сахар - очень важная штука, которая сильно улучшает читаемость кода. Взгляни на тот же async/await в C#.

Zaur
24.01.2018
23:31:05

Vladislav
24.01.2018
23:31:21

Gleb
24.01.2018
23:32:46
Но либы вообще тоже, просто их надо в свой проект с умом тянуть, а не закидывать вёдрами всё, что попало. Я у себя в компании постоянно бью по рукам за не нужные либы, равно как и за велосипеды.

Vladislav
24.01.2018
23:34:54
А делает то он что?
Отправляет поочередно?
Ух достижение.

Google

Gleb
24.01.2018
23:39:59
С добавлением каррирования и частичного применения это очень мощная штука, серьёзно
Ну или те же полноценные классы в JS были сначала полностью реализованны путём транспайлинга, а потом уже запиленны в движок.
Или те же интерфейсы (First-Class Protocols), пока на этапе рассмотрения, но мы можем это уже использовать, просто транспилируя код в обычный JS.
Понимаешь, это примерно как проверка бизнес модели на маленьком кривеньком прототипе, а потом уже запуск нормальной разработки VS долгое и муторное запилинивание того, что не взлетит.


Alexander
24.01.2018
23:46:44
Не надо сравнивать JS и Go, т.к. в JS приходится работать с огромным количеством легаси, да еще и зоопарком браузеров. Так что там без транспайлера новые фичи просто не выживут. Их никто не сможет использовать и, соответственно, никто не будет знать.
Сама по себе идея транспайлеров, по-моему, нигде кроме JS так активно не используется. Go, кстати, в ранних версиях тоже сначала конвертировался в С++, а потом компилировался обычным gcc. Но, думаю, это как минимум сильно медленее

Roman
24.01.2018
23:49:44

Alexander
24.01.2018
23:51:00
Читаемость кода. Вместо лесенки коллбэков безумной глубины - более-менее удобоваримая структура получается

Vladimir
24.01.2018
23:51:24

Roman
24.01.2018
23:52:46

Gleb
24.01.2018
23:53:22
А что именно улучшает async/await?
Ну представь, что ты можешь запустить горутину и тут же на месте дождаться результата её выполнения. При этом у тебя в горутине происходит, допустим, обращение к БД или нечто в этом роде, а стоимость запуска такой вот спецаильной горутины равна нулю.

Alexander
24.01.2018
23:53:40

Roman
24.01.2018
23:54:50

Gleb
24.01.2018
23:55:44

Slava
24.01.2018
23:56:40
зачем это всё если можно синхронно в корутине? )

Roman
24.01.2018
23:57:05
Можно начать с расчета хешей в awaitable functions

Alexander
24.01.2018
23:57:17
В данном случае это вынужденно, т.к. js однопоточный. В Го этого просто в принципе не нужно
Кто в Java многопоточку писал, тот в го поёт и пляшет при виде каналов и горутин