
Alexey
29.08.2018
18:11:48
можно решить генериками

Michael
29.08.2018
18:12:08

Alexey
29.08.2018
18:12:32
но в типах суммах все равно будет нужна параметризация. ты же не хочешь тип сумму писать на каждый тип значения в ней

Daniel
29.08.2018
18:12:39

Google

Alexey
29.08.2018
18:12:57

Daniel
29.08.2018
18:13:06
я довольно активно агрессивен обычно

Alexey
29.08.2018
18:13:48

Daniel
29.08.2018
18:14:00
тогда и не начинай, ок?

Alexander
29.08.2018
18:14:10
:)

Alexey
29.08.2018
18:15:23
Просто каждый раз когда я получаю interface {} у меня возникает вопрос что там. И если это мой код, то еще есть шансы разобраться, но если это чужой, то все. Труба. Можно вокруг этого всего накостылить кодогенерацию и документацию, но в живом проекте поддержать это нереально :(
И вопрос не в том чтобы узнать что там A или B. Вопрос в том, что там может быть массив или строка или хз вообще что. Вот каждый раз вместо этого я хочу видеть конкретный тип параметр.

Daniel
29.08.2018
18:16:30
да откуда ты его так часто получаешь?

Alexander
29.08.2018
18:16:30

Daniel
29.08.2018
18:16:50
не, боль именно от пустого интерфейса
который, конечно, та еще хрень

Google

Alexey
29.08.2018
18:17:12

Alexander
29.08.2018
18:17:25
а... пустых я тоже боюся что-то

Pawel
29.08.2018
18:34:41
Изо дня в день этот плачь Ярославны.
— без дженериков никак!
— приведи пример кода!
— ...
— без дженериков никак!
тайпклассов нет
дада, в С++ они ох как нужны
Ты бы разобрался для начала что такое тайп классы и какой в С++ обощённое прграммирвоание

Anatoly
29.08.2018
18:37:02
даже трейтов нет
типа скаловских
или растовых
скоро будут концепты, но то не то)

Евгений
29.08.2018
18:38:00
В расте таже фигня.
Ими можно обмазываться.

Pawel
29.08.2018
18:38:47

Anatoly
29.08.2018
18:39:29
накой в плюсах тайпклассы, если даже нормального вывода типов нет?)
как в хаскеле или в f#

Roman
29.08.2018
18:39:50

Anatoly
29.08.2018
18:40:52
я очень часто пишу код, помогающий компилятору понять, что он имеет дело не с переменной или указателем на функцию, а с типом...а вы про тайпклассы) Рано ещё, надо лет 20 подождать)
тогда во всех языках будет одно и то же

Pawel
29.08.2018
18:41:17

Евгений
29.08.2018
18:41:23

Google

Pawel
29.08.2018
18:41:43

Anatoly
29.08.2018
18:42:30

Алексей
29.08.2018
18:42:35
Контракты воображаемого Go2 чем то очень отдалённо напоминают тайпклассы. Ну прям такое ощущение возникает.

Anatoly
29.08.2018
18:44:40
я, кстати, достаточно недавно начал что-то писать на го и мне было очень тяжело после C++ и Java... это из-за того что у меня ООП мозга, да?
позабавило форматирование даты/времени)

Сергей
29.08.2018
18:46:21

Anatoly
29.08.2018
18:48:05

Алексей
29.08.2018
18:48:46

Anatoly
29.08.2018
18:49:00
это как с естественными языками

Алексей
29.08.2018
18:49:23
ну это прям очень широкое определение
по которому вообще почти все языки признаются живыми

Michael
29.08.2018
18:50:02
После беглого прочтения черновика гоу2 генериков, показалось что это продолжение развития идеи, что генерики в ГОУ это интерфейсы
Чем сейчас плохо - не понятно, что черновики дадут лучшего вообще не ясно

Алексей
29.08.2018
18:50:55
Дамы и господа, подскажите пожалуйста как разрешить ситуацию...
У меня пакет в котором методы "ловят" внешние сообщения допустим http... парст их и передает дальше другому пакету, в котором крутится в бесконечный цикл и делает важные дела... в него приходят данные и он там с ними варится... но наступает момент, когда ему надо отдать какую-то информацию во внешку, он должен отдать её пакету который могет это делать - который и работает с "внешкой"...
и у меня получается циклический импорт... мне надо из одного пакета вызывать определнные методы, и обратно... и я что-то голову сломал как тут разъехаться что бы не было циклического ипорта...

Алексей
29.08.2018
18:52:01

Michael
29.08.2018
18:54:48

Daniel
29.08.2018
18:55:46

Алексей
29.08.2018
18:56:38
вот наследования точно не надо, тем более через генерики
и такие энтузиасты будут посылаться на три буквы моментально

Daniel
29.08.2018
18:56:40

Google

Алексей
29.08.2018
18:57:20
но вообще как бы в черновике в overview есть разделы Problem и Goals

Daniel
29.08.2018
18:58:34
а я бы и запретил, будь моя воля

Алексей
29.08.2018
18:58:57
а ну понятно

Kirill
29.08.2018
18:59:06

Daniel
29.08.2018
18:59:24
ну - бодливой корове бог рог не дает

Алексей
29.08.2018
18:59:42
методы унести в третий пакет
я увел с одно пакета и все продолжило падать... со второго не унес... благдарю... видно мозг уже перестает соображать

Алексей
29.08.2018
19:00:26
ещё тьюринг полноту надо запретить, чтобы бесконечные циклы никто создать не смог

Michael
29.08.2018
19:03:34
Ваще круто было бы ?

Roman
29.08.2018
19:04:20

Admin
ERROR: S client not available

Алексей
29.08.2018
19:04:54

Roman
29.08.2018
19:05:07
Вот чего стоит сделать с unsafe - это сделать блоки кода
И ещё очень хочется свои коллекции вместо стандартных

Daniel
29.08.2018
19:07:39
а зачем?
мне вот не хочется :)

Pawel
29.08.2018
19:16:36

Алексей
29.08.2018
19:17:57
методы унести в третий пакет
Это ничем не помогает, только теперь в цепочке импортов появляется 3 пакет, получается что два других ипортят его, а он импортит оба... а при разносе на 4 пакета я получил крговую зависимость...

Daniel
29.08.2018
19:23:01
коллега

Google

Daniel
29.08.2018
19:23:07
что вам не помогает

Wingman
29.08.2018
19:24:37

Daniel
29.08.2018
19:25:41
да причем тут каналы
человек схему типов сдизайнить не може без циклических зависимостей
а вы ему каналы

Алексей
29.08.2018
19:28:03
что вам не помогает
Вынесение методов в отдельный пакет, может я это криво делаю, но получается что оба пакета испортят его, а он испортит два других...
Или Вы предлогами вынести вызываемый метод в другой пакет?...

Wingman
29.08.2018
19:30:07
я поначалу тоже о подобное спотыкался

Алексей
29.08.2018
19:37:01
надо сесть и начертить в голове/в пейнте/на бумажке схему желаемой работы с учетом невозможности цикличных импортов )
Есть пакет отвечающий за работу с клиентами через вебсокеты, он в себе содержит логику према и отправки сообщений, и есть другой пакет, центральная логика, которая должна принимать в себя сообщения которые даёт пакет отвечающий за прием сообщений, и он же способен сам генирить сообщения которые должен отдавать пакету отвечающему за работу с клиентами по вебсокетам... Я при таком раскладе вижу два варианта, или разделить логикой пакета работающего с сокетами на две или спилить брокер сообщений и общаться через него...

Wingman
29.08.2018
19:37:33
а чем каналы плохо? :)

Алексей
29.08.2018
19:40:56
Может и не плохо, только проблему то это не решает, что бы что-то положить в канал нужной мне горутины, мне соответствующую горутину импортнуть придется...

Wingman
29.08.2018
19:41:07
нет
раздели логику и данные

Roman
29.08.2018
19:42:16

Wingman
29.08.2018
19:43:33
ну, примитивный пример из головы:
- есть пакет DB, оперирующий общением с БД. Конект, дисконект, ещё что-то
- есть пакет с бизнес-логикой
- есть данные, которые должны быть доступны обоим пакетам (сами данные, их структуры): модели/описания таблиц
собственно, выносишь модели в отдельный пакет - и импортишь его куда угодно. Главное, чтобы в нём не было _вообще_ ничего лишнего: это тупо структуры, которые ничего не знают ни про БД, ни про логику
у тебя, например (ну пальцем в небо, не зная твоей начинки) - сделать отдельные структуры "UserMessage", "UserResponse", которые пулять по каналам в ядро и обратно

Pawel
29.08.2018
19:47:16
А что странного?
на сколько я понимаю, стандартные контейнеры устраивают всех кроме вас и может быть ещё пары тройки людей

Алексей
29.08.2018
19:51:33

Wingman
29.08.2018
19:52:01
эм... а что именно непонятно?)
создаёшь 2 канала (ин, аут) или один (ин/аут) ; из "общателя" передаёшь в ядро, или наоборот, или в оба при инициализации
дальше обоими пакетами слушаешь эти каналы, при поступлении данных - что-то с ними делаешь

Аркадий
29.08.2018
19:53:59