Daniel
а я бы и запретил, будь моя воля
Алексей
а ну понятно
Kirill
Daniel
ну - бодливой корове бог рог не дает
Алексей
методы унести в третий пакет
я увел с одно пакета и все продолжило падать... со второго не унес... благдарю... видно мозг уже перестает соображать
Алексей
ещё тьюринг полноту надо запретить, чтобы бесконечные циклы никто создать не смог
Michael
Ваще круто было бы 👍
Roman
Roman
Вот чего стоит сделать с unsafe - это сделать блоки кода
Roman
И ещё очень хочется свои коллекции вместо стандартных
Daniel
а зачем?
Daniel
мне вот не хочется :)
Алексей
методы унести в третий пакет
Это ничем не помогает, только теперь в цепочке импортов появляется 3 пакет, получается что два других ипортят его, а он импортит оба... а при разносе на 4 пакета я получил крговую зависимость...
Алексей
Daniel
коллега
Daniel
что вам не помогает
Wingman
Daniel
да причем тут каналы
Daniel
человек схему типов сдизайнить не може без циклических зависимостей
Daniel
а вы ему каналы
Алексей
что вам не помогает
Вынесение методов в отдельный пакет, может я это криво делаю, но получается что оба пакета испортят его, а он испортит два других...
Алексей
Или Вы предлогами вынести вызываемый метод в другой пакет?...
Wingman
Wingman
я поначалу тоже о подобное спотыкался
Алексей
надо сесть и начертить в голове/в пейнте/на бумажке схему желаемой работы с учетом невозможности цикличных импортов )
Есть пакет отвечающий за работу с клиентами через вебсокеты, он в себе содержит логику према и отправки сообщений, и есть другой пакет, центральная логика, которая должна принимать в себя сообщения которые даёт пакет отвечающий за прием сообщений, и он же способен сам генирить сообщения которые должен отдавать пакету отвечающему за работу с клиентами по вебсокетам... Я при таком раскладе вижу два варианта, или разделить логикой пакета работающего с сокетами на две или спилить брокер сообщений и общаться через него...
Wingman
а чем каналы плохо? :)
Алексей
Может и не плохо, только проблему то это не решает, что бы что-то положить в канал нужной мне горутины, мне соответствующую горутину импортнуть придется...
Wingman
нет
Wingman
раздели логику и данные
Roman
Wingman
ну, примитивный пример из головы:
- есть пакет DB, оперирующий общением с БД. Конект, дисконект, ещё что-то
- есть пакет с бизнес-логикой
- есть данные, которые должны быть доступны обоим пакетам (сами данные, их структуры): модели/описания таблиц
собственно, выносишь модели в отдельный пакет - и импортишь его куда угодно. Главное, чтобы в нём не было _вообще_ ничего лишнего: это тупо структуры, которые ничего не знают ни про БД, ни про логику
Wingman
у тебя, например (ну пальцем в небо, не зная твоей начинки) - сделать отдельные структуры "UserMessage", "UserResponse", которые пулять по каналам в ядро и обратно
Pawel
А что странного?
на сколько я понимаю, стандартные контейнеры устраивают всех кроме вас и может быть ещё пары тройки людей
Wingman
эм... а что именно непонятно?)
Wingman
создаёшь 2 канала (ин, аут) или один (ин/аут) ; из "общателя" передаёшь в ядро, или наоборот, или в оба при инициализации
дальше обоими пакетами слушаешь эти каналы, при поступлении данных - что-то с ними делаешь
arkady
arkady
Алексей
Щас попробую осознать... Что-то пробивается в голову :)
Wingman
Да, в парадигму вьезжать надо
Wingman
А потом всякие там блокировки.... Особенно если куча каналов создается и убивается динамически
Алексей
Тяжко питонисту go дается....
arkady
aadz
Ничего, привыкнешь очень быстро
Pawel
Прочёл generics draft overview. Не очень понятен радостный ажиотаж ФП-боев. Судя по тексту там больше вопросов чем ответов, совершенно не понятно появятся ли дженерики в Го-2, а если появятся, то в каком виде. Контракты в том виде, как он их описал, было бы круто конечно, но маловероятно что они будут (а без них я так понял дженерикам не бывать). Не понятно например как определить эквивалетность контрактов и как их наследовать.
Ευγένιος
Тут есть кто говорил что джинерики не нужны?
Ευγένιος
Что вы будете говорить после того как их введут?
Алексей
Что, коллеги, благодарю!! Пошел осознавать :) всем доброй ночи!
Pawel
Pawel
Pawel
Daniel
не
Daniel
вот @pragus говорит, что они ему были бы полезны - и я ему верю
Daniel
просто он ленится объяснить, в чем :)
Ευγένιος
Daniel
какое именно мнение я не изменю?
повторяю по буквам: за 5 лет программирования на go не столкнулся с задачей, где были бы уместны генерики
Daniel
так видно?
Daniel
вы столкнулись, коллега?
Daniel
опишите, пожалуйста, свою задачу
Stanislav
мне больше кажется, что они хотят изобрести неудобную версию interface{} 🙂
Stanislav
лучше бы сделали более удобным (и менее затратным) получение типа данных из интерфейса (типа чтобы я мог сделать что-то вроде `if i.Type != int { return }`). А, погодите, они же это и хотят ввести в виде type section 😄
кошмарЪ
Vadim
Привет, есть что-нибудь на го, что умеет создавать онлайн график? В gui
Pawel
Daniel
Daniel
нет уж, не надо
Pawel
@onokonem как вам вот это
\\ list
package list[T]
type T interface{}
type List struct {
Val T
Next *List
}
// main
package main
import (
il "list"[int]
sl "list"[string]
)
var iList = il.List{3}
var sList = sl.List{"hello"}
имхо - и рыбку съесть и овцы целы
Daniel
этого недостатточно, к сожалению
Roman
Pawel
Daniel
со всеми, надо сказать, вытекающими, вроде сдвига элементов массива при удалении первого
Daniel