Size: a a a

Golang Developers — русскоговорящее сообщество

2020 August 30

СГ

Сергей Гришаев... in Golang Developers — русскоговорящее сообщество
Alexander Shavelev
ну в случае вашего кода - просто добавьте в рейнже брейк если i == len(Nodes)

и потом закрытие канала шоб не было ликов
Либо через цикл по размеру канала обычное чтение из канала
источник

DS

Denis Shkabatur in Golang Developers — русскоговорящее сообщество
Alexander Shavelev
ну в случае вашего кода - просто добавьте в рейнже брейк если i == len(Nodes)

и потом закрытие канала шоб не было ликов
тоже идея. В инете ещё вот такой способ подсмотрел, то есть wg.Wait и close(c) в отдельной горутине запустить.
источник

AS

Alexander Shavelev in Golang Developers — русскоговорящее сообщество
Denis Shkabatur
тоже идея. В инете ещё вот такой способ подсмотрел, то есть wg.Wait и close(c) в отдельной горутине запустить.
1) выглядит не оч
2) новая горутина тут оверхед
3) я честн не знаю и эт вопрос - после клоуза получите или вы данные что хранились в буфере или нет, я думаю что нет
источник

DS

Denis Shkabatur in Golang Developers — русскоговорящее сообщество
Alexander Shavelev
1) выглядит не оч
2) новая горутина тут оверхед
3) я честн не знаю и эт вопрос - после клоуза получите или вы данные что хранились в буфере или нет, я думаю что нет
но этот способ работает)) Смысл в том что я читаю из канала пока происходит wg.Wait(), а как только все выполнилось то канал закрывается и при считывании очередного элемента цикл завершается. Но я сам не уверен в том, что все значения из канала дойдут. Пока доходят)
источник

AS

Alexander Shavelev in Golang Developers — русскоговорящее сообщество
Denis Shkabatur
но этот способ работает)) Смысл в том что я читаю из канала пока происходит wg.Wait(), а как только все выполнилось то канал закрывается и при считывании очередного элемента цикл завершается. Но я сам не уверен в том, что все значения из канала дойдут. Пока доходят)
- он может работать потому что "так лягли карты планирощивка"
- или я не прав в п3 был

upd таки мое предположение было неверно
источник

DS

Denis Shkabatur in Golang Developers — русскоговорящее сообщество
Alexander Shavelev
- он может работать потому что "так лягли карты планирощивка"
- или я не прав в п3 был

upd таки мое предположение было неверно
В любом случае благодарю за идею)
источник

DS

Denis Shkabatur in Golang Developers — русскоговорящее сообщество
Alexander Shavelev
- он может работать потому что "так лягли карты планирощивка"
- или я не прав в п3 был

upd таки мое предположение было неверно
То есть получается что можно читать из закрытого буферизированного канала пока в его буфере есть значения, так ?
источник

AS

Alexander Shavelev in Golang Developers — русскоговорящее сообщество
Denis Shkabatur
То есть получается что можно читать из закрытого буферизированного канала пока в его буфере есть значения, так ?
йес
источник

СГ

Сергей Гришаев... in Golang Developers — русскоговорящее сообщество
Denis Shkabatur
То есть получается что можно читать из закрытого буферизированного канала пока в его буфере есть значения, так ?
Получается так...
https://play.golang.org/p/9Efd2w5jqNE
источник

DS

Denis Shkabatur in Golang Developers — русскоговорящее сообщество
Спасибо)
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Сергей Гришаев
Хотелось бы увидеть чуть больше кода.
p.s. Если вы заранее знаете количество горутин, то проще будет  сделать перед циклом так:
wg.Add(len(mainNode.Nodes)), чем вызывать метод Add() некоторое количество раз
Плохой совет.
Правильней всё-таки вызывать wg.Add(1) на каждую итерацию, иначе в один прекрасный момент рискуете получить "зависшую" wg.Wait().

Это, конечно редкий случай, но всё же.
источник

СГ

Сергей Гришаев... in Golang Developers — русскоговорящее сообщество
x-foby
Плохой совет.
Правильней всё-таки вызывать wg.Add(1) на каждую итерацию, иначе в один прекрасный момент рискуете получить "зависшую" wg.Wait().

Это, конечно редкий случай, но всё же.
Спорить не буду, но такое возможно, если только количество горутин изменится между вызовом Add() и выполнением цикла. Других причин я не вижу
источник

x

x-foby in Golang Developers — русскоговорящее сообщество
Сергей Гришаев
Спорить не буду, но такое возможно, если только количество горутин изменится между вызовом Add() и выполнением цикла. Других причин я не вижу
Других причин и нет, но ситуаци, когда количество горутин меняется (continue до запуска функции) — это встречается.
источник

СГ

Сергей Гришаев... in Golang Developers — русскоговорящее сообщество
В таких кейсах (когда количество фактических горутин != размеру массива с ними) - полностью согласен
источник
2020 August 31

V

Vlad in Golang Developers — русскоговорящее сообщество
Народ, а на продукцию от JB бывают скидки?
источник

AP

Anatoliy Poloz in Golang Developers — русскоговорящее сообщество
бывает
источник

AP

Anatoliy Poloz in Golang Developers — русскоговорящее сообщество
я в хамблбандл ловил, но мне не надо, я на nvim пишу
источник
2020 September 01

DS

Denis Shkabatur in Golang Developers — русскоговорящее сообщество
Подскажите пожалуйста, что у меня не так с append, почему результаты сплита верные, а в итоге в массиве оказывается "]10.11.11.71230" ?
источник

DS

Denis Shkabatur in Golang Developers — русскоговорящее сообщество
источник

DS

Denis Shkabatur in Golang Developers — русскоговорящее сообщество
Denis Shkabatur
Подскажите пожалуйста, что у меня не так с append, почему результаты сплита верные, а в итоге в массиве оказывается "]10.11.11.71230" ?
Проблема оказалась в функции Println, которая криво печатала массив. Если печатать поэлементно то всё норм.
источник