Aziz
type superSlice slice
Aziz
типа такое
Илья
type superSlice slice
type MyStruct []Т или твой тип
Aziz
так, сейчас вы создали тип который как значение берет только byte, верно же ?
Илья
да, но можно свой тип
Илья
расширить слайс это только добавить свои методы
Aziz
а я хочу создавать такой тип который может принять все (как generic) можно такое ?
Vladislav
но это кончено
Vladislav
лучше как Илья предлагает - слайс из конкретного типа и этот тип задать параметром
Юра (Юрий Александрович)
Привет всем хочу наследоваться от slice что бы расширить его. Как можно такое сделать ?
Никак. Не получится сделать новый тип, с которым по прежнему будут работать make и append, по которому можно будет делать for ... range, и при этом у которого будут свои методы. И встроить слайс в свой тип тоже нельзя.
Alexander
короче нас ждут теперь интерфейсы: Makable, Appendable, Rangable
Alexander
Slicable
Alexander
иначе пизда
Илья
Stackable
Юра (Юрий Александрович)
Илья
Concurrentable
Alexander
все будет, только потом. и все будут плеваться "что за ерунда, хватит уродовать мою маленькую красивую гошечку", но где разработчики были 8 лет
Alexander
вангую, в ближайшие года 3 появится
Юра (Юрий Александрович)
да, наслаждайтесь гошечкой, пока она еще маленькая и уютная. Хотя, наверное, уже поздно.
xarakiri
ждем появления магических методов)
Alexander
а по сути, ну можно свой Make сделать на таком слайсе, свой Append и тд, но чем фактически будет отличаться от возможности дать обращаться built in функциями непонятно
Юра (Юрий Александрович)
а по сути, ну можно свой Make сделать на таком слайсе, свой Append и тд, но чем фактически будет отличаться от возможности дать обращаться built in функциями непонятно
свой make будет не такой. Т.к. "настоящий" make работает со слайсом любого типа, с мапой любого [типа]типа. Написать такое же не получится, т.к. языковых средств Go недостаточно для внедрения в сам Go новых конструкций.
Alexander
ну тут тоже
Alexander
только у него будет внутри по сути тот же самый make и ничего больше, если взять вопрос с которого началось обсуждение
Юра (Юрий Александрович)
А я вот мечтаю о каналах с изменяющимся размером.
Юра (Юрий Александрович)
изменять ) вдруг ты создал канал, а потом оказалось, что маловат, надо увеличить.
Vladislav
канал не предназначен для хранения данных
Юра (Юрий Александрович)
но размер же у него зачем-то есть?
Илья
а зачем увеличивать размер канала?
Vladislav
размер и у буфера есть
Юра (Юрий Александрович)
а зачем увеличивать размер канала?
Такая сложилась ситуация в рантайме, например.
Илья
Такая сложилась ситуация в рантайме, например.
извиняюсь, неправильно написал
Юра (Юрий Александрович)
Допустим, я хочу, чтобы пишущие в канал го-рутины не простаивали. Как я могу это обеспечить? Никак.
Vladislav
прохладная мотивация и xy problem в целом
Юра (Юрий Александрович)
очередь - это уже внешний инструмент. В Го ж нет очередей встроенных. Точнее есть - но это как раз канал
Илья
Буферизированный канал создается с конкретным лимитом, который зависит от маскимальной вместимости вашего пайплайна. Если capacity изменяется, то смысл использовать каналы вообще?
Юра (Юрий Александрович)
А что тогда использовать вместо каналов?
Vladislav
буферизованный канал по сути и есть просто очередь с сахарком
Nikita
по поводу этого можно почитать про worker pool, чтобы не допускать простоя горутин
Alexander
для чего канал с изменяющимся буфером? чтобы что?
Юра (Юрий Александрович)
для чего канал с изменяющимся буфером? чтобы что?
Чтобы не делать его излишне большим, когда он не нужен, но и иметь возможность его расширить, если все-таки надо.
Alexander
нуууууууу
Alexander
а когда он нужен большой?
Alexander
в чем цель увеличивать? я не очень понимаю
Юра (Юрий Александрович)
а когда он нужен большой?
когда внезапно 10 тысяч клиентов от сервера что-то попросили.
Alexander
ну это плохое, потому что нет гарантии обработки. нужна внешняя очередь
Юра (Юрий Александрович)
А там в любом случае гарантии нет. .
Alexander
есть, положил во внешнюю очередь - четенько уже в отдельных процессах обработку отстроил
Alexander
тут крякнулся твой процесс веб сервера - прощай внутренняя очередь
Юра (Юрий Александрович)
тут крякнулся твой процесс веб сервера - прощай внутренняя очередь
К сожалению да. Но учитывая, что связь с клиентами по HTTP-соединениям, если сервер крякнется, ответы все равно уже будет посылать не в куда.
Alexander
а если гарантия обработки не столь критична, а расширить хочешь, чтобы горутины не ждали, то значит у тебя тормозит процесс переваривания этой очереди, и вместо того, чтобы увидить, что он у тебя тормозит, ты будешь жить себе дальше припеваючи, а потом окажется, что у тебя нет 90% побочных данных, которые должны были сформироваться
Alexander
так да
Alexander
я об чем говорю
Alexander
вообще вместо буферизированного канала есть мьютекс и слайс =)
Юра (Юрий Александрович)
но емейлы не уйдут, а ты уже отдал 100500 страниц, что ща вам емейл с важными данными придет
нет, там другая ситуация. Данные отдаются именно клиентам и других последствий запросов, кроме как отдача им данных, нет.
Alexander
так а что ты откладываешь в очередь в таком случае?
Alexander
я не понимаю, приведи пример
Юра (Юрий Александрович)
В очередь мы складываем запросы клиентов.
Alexander
под очередью будем понимать и буферизированный канал, и внешнюю
Vladislav
почему бы горутине, принявшей запрос, просто не ждать ответа
Vladislav
тем более что наверняка она так и так будет что-то из канала ждать
Alexander
В очередь мы складываем запросы клиентов.
в смысле? типа у тебя есть n воркеров, и запрос клиента ты кладешь в канал, чтобы ждать пока его воркер обработает, отдаст результат чтобы ты мог его отправить?
Alexander
чтобы что?
Юра (Юрий Александрович)
распухает количество го-рутин и распухает количество используемой ими памяти. А так - горутина, принимающая запрос от клиента, оставляет в канале структуру-запрос и благополучно завершается, не занимая больше память.
Alexander
у тебя уже горутина создана
Alexander
или ты хочешь свой веб сервер написать?
Юра (Юрий Александрович)
потому что контекст принятия и обработки запроса достаточно крупный, и держать множество стоящих на паузе рутин не нужно.
Alexander
свой хттп сервер
Юра (Юрий Александрович)
свой хттп сервер
нет, хттп-сервер стандартный.
Юра (Юрий Александрович)
у тебя уже горутина создана
го-рутина, принимающая запрос, и го-рутина, обрабатывающая запрос - это разные го-рутины.
Alexander
ну а что ты хочешь? приходит запрос, у тебя запускается твой хэндлер, на него УЖЕ (!) выделена горутина