Artem
В консоли вижу
Slava
должно в виде ошибки возвращаться
Slava
может ты где-то не перехватываешь?
Slava
покажи код
Artem
resp, err := client.Do(req)
if err != nil {
fmt.Sprintf("Error: %s", err.Error())
return body, err
}
Artem
Перехватываю
Sergei
fmt.Sprintf?
Artem
Ну?
Sergei
Sprintf formats according to a format specifier and returns the resulting string.
Artem
Как можно отловить где у меня index out of range ?
Илья
А код не показывал?
Илья
Не нахожу ссылок
Artem
Там код около 2000 строк и несколько файлов
Aleksandr
Artem
Aleksandr
ну и ты не видишь путей файлов и номеров строк?
Artem
Там ничего нет, чтобы вызывало это
Aleksandr
main.go:74 покажи
Artem
fmt.Println(p)
Aleksandr
по-моему подвираешь. скрин покажи участка кода вместе с номерами строк, +-10 строк
Artem
что за подвираешь
🏁Александр
подвираешь - нагло соврал, каналья 🙂
Aleksandr
что за подвираешь
заблуждаешься, глаза залил - не видишь номеров строк, смотришь в другой код и дезинформируешь - выбирай сам
Aleksandr
трейс паники не соотносится с тем, что ты показываешь
Artem
Понял, сам разберусь)
🏁Александр
это жжж неспроста!
🏁Александр
@zelenin помоему мы близки к разгадке тайны иллюминатов, человек сразу ушел что бы не раскрыть еще больше
Sergey
Подскажите, нормально использовать буферезированный канал для ограничения количества запускаемых горутин или есть другой выриант?
Andrey
нормально. других вариантов тоже много, например https://godoc.org/golang.org/x/sync/semaphore
G72K
Sergey
Как это?
blockChan = make(chan bool,5)
for {
blockChan<-true
go func(){
//WORK
<-blockChan
}()
}
как то так
Andrey
такой подход в самом go используют: https://github.com/golang/go/blob/964639cc338db650ccadeafb7424bc8ebb2c0f6c/src/net/net.go#L592
G72K
G72K
s/записать/прочитать/
Sergey
Sergey
хотя вот defer у меня не выполнялся когда я ждал канал в select, но закрывал его раньше чем он освободится
Anonymous
ребят, есть забавный пример
https://stackoverflow.com/questions/15715605/multiple-goroutines-listening-on-one-channel
почему это с каналами происходит?
и вопрос, можно ли как то ставить мьютекс на чтение из канала?)
Anonymous
Anonymous
Anonymous
Anonymous
я вот сейчас это наблюдаю в 1.9
Anonymous
Запустил пример по ссылке в play.golang.org, отработал только один горутин
Anonymous
Anonymous
ща проверю, ожидайте)
Anonymous
неа, такое же на 1.10
Kirya
можно пример кода, тоже проверю?
Anonymous
вот пример
https://play.golang.org/p/eXUciafpLo3
Anonymous
если раскоментить sleep то все работает норм
Kirya
так там код не правильный
Anonymous
что не правильно?
Kirya
ты в горутине используешь переменную, которая в range меняется
Anonymous
jobs?
Kirya
go func(j int) {
defer func() {
pool <- w
wg.Done()
}()
fmt.Printf("worker: %d -> job #%d\n", w, j)
}(job)
вот так хотя бы
Anonymous
Kirya
ну а что ты хочешь?
Anonymous
потому что оно в отдельной рутине
Kirya
пишешь не правильный код и говоришь что не работает)
Anonymous
почему не в отдельной не работает
Anonymous
мне не кажется что это не правильный код)
Kirya
где? пример есть?
Kirya
то, что ты показал не правильно
Kirya
это тоже самое что обращаться к глобальной переменой из разных горутин и пытаться предсказать её состояние
Kirya
Anonymous
Anonymous
Kirya
Kirya
и когда ты достаёшь её значение в горутине, оно уже изменено range'м
Anonymous
Kirya
и что?
Kirya
горутина то запущена в range
Anonymous
потокобезопасноть в каналах как бы
Kirya
Anonymous
хорошо, почему если есть слип то все работает тогда?)
Kirya
сделай вот так
for job := range jobs {
j := job
Anonymous