170 похожих чатов

А знаете что ещё странно? ну это уже чисто гошный

вопрос, есть два цикла фор в форе, внутренный вор подписан
for {
someLoop:
for {
select {
case someErr := <-errChan:
break someLoop
}
}
log.Println("After break readMessagesLoop!")

if err := conn.Close(); err != nil {
log.Printf("[main] conn.Close Error: %v", err)
}

if err := ch.Close(); err != nil {
log.Printf("[main] ch.Close Error: %v", err)
}

log.Println("Restart worker")
}

(Надеюсь код номрально вставился)

Так вот, у меня в консоли высвечивается
After break readMessagesLoop!
ПОтом
[main] conn.Close Error: Exception (504) Reason: "channel/connection is not open"

И всё) дальше код почему то не едёт, хотя должен был во внешнем лупе заново начаться, если закоментриую закрытие коннекшенов и каналов, то всё нормально крутиться,))) Очень странно))))

2 ответов

19 просмотров

По факту код должен был без проблем дойти до конца же и высветить log.Println("Restart worker") И начаться опять, но нет, буквально последний лог еррора и всё, стоит на месте, не паникует ничего) Если закоментировать именно if err := conn.Close(); err != nil { log.Printf("[main] conn.Close Error: %v", err) } if err := ch.Close(); err != nil { log.Printf("[main] ch.Close Error: %v", err) } Эту часть, то всё будет дозодить до log.Println("Restart worker") и начинаться цикл заново)

а зачем вам select в данном примере, если вы читаете только из 1 канала? уберите его и запустите, (только добавьте if на someErr, ну точнее ok, хотя смотря что вам нужно))

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта