@gogolang

Страница 1293 из 1630
Daniel
15.08.2018
11:53:45
я бы хотел понять, почему оно вдруг is not an open file descriptor

Roman
15.08.2018
11:57:52
Не тот fd

Google
Daniel
15.08.2018
12:00:18
не. оно до того справилось 100К+ соединений успешно акцептнуть

Pawel
15.08.2018
12:08:48


Artem
15.08.2018
12:49:50
можно ли абстрактно обратится к полю структуры? вроде struct.AnyField == "some" ?

Daniel
15.08.2018
12:50:00
а?!

Artem
15.08.2018
12:51:10
все поля структуры могут принимать только два значения "some" / "not some" и они должны быть 100% не пустыми и не хочется писать проверок кучу вроде if s.FieldOne == "some"

Artem
15.08.2018
12:51:36
рефлексией только
ой все, но спасибо!)

Антон
15.08.2018
13:09:01
Добрый день! помогите мне, пожалуйста, понять поведение каналов в данной ситуации: Имеется функция, которая вызывается в виде горутины, и туда передается канал, в который нужно передать результат выполнения чтение из этого канала происходит внутри select'a по какой-то причине case для этого канала выстреливает дважды в первый раз в канал передается результат выполнения функции, а во второй уже пустая структура необходимого типа в чем может быть дело? сейчас приложу скрины





на первом скриншоте вызов функции create как горутины и чтение из канала, а на втором - реализация этой функции

Aleksandr
15.08.2018
13:11:55
что-то путаешь

у тебя же канал тпиизирован - там не может быть ничего кроме User

Google
Антон
15.08.2018
13:12:36
мне туда приходит пустая структура User

Aleksandr
15.08.2018
13:13:02
значит ее и отправляешь

Антон
15.08.2018
13:13:31
так я же один раз делаю отправку в канал

Антон
15.08.2018
13:15:35
зачем for i = 0; i < 2; i++ ?
потому что в каждый из каналов может прийти только 1 значение поэтому я жду максимум 2 интерации, по одной на канал

понял, секунду
https://play.golang.org/p/Q_wzRrQkptp

Aleksandr
15.08.2018
13:16:31
https://play.golang.org/p/Q_wzRrQkptp
где u создается?

Антон
15.08.2018
13:17:01
прошу прощения, забыл его в плейграунде приходит как параметр в функцию Register

поправил ссылку

Crypt
15.08.2018
13:17:57
Антон
15.08.2018
13:18:32
во первых create должен закрывать канал, а не Register
да, изначально так и было, закрытие перекочевало в Register, пока я искал ошибку)

Aleksandr
15.08.2018
13:19:52
если ты два раза получаешь u, то ты 2 раза его отправляешь

Crypt
15.08.2018
13:19:54
вообще тут каналы не в тему, лучше заюзатьsync.WaitGroup

Aleksandr
15.08.2018
13:20:00
либо ты неверно интерпретируешь то, что видишь

логируй свои действия

Антон
15.08.2018
13:21:05
если ты два раза получаешь u, то ты 2 раза его отправляешь
я посмотрел поиском по проекту, запись в этот канал происходит только в функции create, а она вызывается лишь один раз

Google
Антон
15.08.2018
13:21:51
вообще тут каналы не в тему, лучше заюзатьsync.WaitGroup
я думал об этом, но просто тогда я смогу обработать ошибку, если она появится, только когда все завершится, а в моей реализации я сразу ее получу и верну результат

логируй.
поставил лог в функцию create, выстрелил один раз

Crypt
15.08.2018
13:23:34
вообще странно, что select не блокирует, ведь кроме юзеров ничего не отправляется сейчас, как я понял

Aleksandr
15.08.2018
13:23:40
поставь логи и продемонстрируй выхлоп

Антон
15.08.2018
13:24:01
значит и прочел один раз)
у меня внутри кейса, который читает канал юзера стреляет дважды

Crypt
15.08.2018
13:24:28
лол ващет

ты юзаешь u для create и для select

попробуй новую переменную объявить

Антон
15.08.2018
13:27:01


Антон
15.08.2018
13:27:20


Aleksandr
15.08.2018
13:28:06
пробовал, не помогает
ну так ты закрываешь канал после отправки

в тот же канал уже не отправить

то есть создается другой

Register два раза вызывается?

Антон
15.08.2018
13:29:06
нет

Aleksandr
15.08.2018
13:33:13
да, я воспроизвел

Google
Aleksandr
15.08.2018
13:33:16
щас разберемся

Антон
15.08.2018
13:33:53
Ура!) я бы просто переписал на waitGroup, но хочется понять, в чем тут нюанс

Crypt
15.08.2018
13:34:53
https://play.golang.org/p/5B6xzV2r1b7

Антон
15.08.2018
13:35:36
да, тут как раз тоже есть такая беда

Crypt
15.08.2018
13:36:39
https://play.golang.org/p/TcWwQkiWLbr

break зарулил, дело в for

у меня один вопрос - как он читает из закрытого канала и закрывает его еще раз?))))

Антон
15.08.2018
13:38:11
https://play.golang.org/p/TcWwQkiWLbr
ну если делать так, как тут, то не удастся дождаться данных из канала sectorCh

Admin
ERROR: S client not available

Антон
15.08.2018
13:38:19
не, читать то из закрытого канала в принципе вроде ведь можно? во всяком случае через for range точно можно из него все достать

но откуда в канале берется инфа, после того как он закрывается - загадка

Lesha
15.08.2018
13:39:58
у меня внутри кейса, который читает канал юзера стреляет дважды
кажется в селекте нужно сделать типа того: case u, ok = <-userCh: if !ok { break // return }

при закрытии канала оно еще что-то пуляет емнип

Антон
15.08.2018
13:40:45
Lesha
15.08.2018
13:40:54
это ожидаемое поведение

Илья
15.08.2018
13:41:48
Илья
15.08.2018
13:41:53
https://dave.cheney.net/2014/03/19/channel-axioms

Антон
15.08.2018
13:42:09
во дела не знал

Google
Антон
15.08.2018
13:42:21
это ожидаемое поведение
спасибо большое, просвятил

буду знать)

Aleksandr
15.08.2018
13:42:26
https://play.golang.org/p/FfeL-lVIibl

надо ok проверять

Crypt
15.08.2018
13:42:37
A receive from a closed channel returns the zero value immediately
т.е. селект всегда будет пробиваться пустыми значениями из закрытых каналов?

Aleksandr
15.08.2018
13:42:41
иначе читаем из пустого канала

Aleksandr
15.08.2018
13:43:12
имнип не всегда, 1 раз
в моей демке всегда

Crypt
15.08.2018
13:43:24
даже после вычитывания пустого значения

Andrei
15.08.2018
13:43:45
т.е. селект всегда будет пробиваться пустыми значениями из закрытых каналов?
да, потому что select делает неблокирующее чтение и в переменную слева всегда что то должно упасть

Илья
15.08.2018
13:43:49
имнип не всегда, 1 раз
https://play.golang.org/p/c0Ho8dw0Lg7

Kirill
15.08.2018
13:45:08
Б-же, у нас что, люди каналы уже не знают?

Lesha
15.08.2018
13:45:32
Б-же, у нас что, люди каналы уже не знают?
не все 10 лет на гошечке сидят

Илья
15.08.2018
13:45:35
Б-же, у нас что, люди каналы уже не знают?
эко тебя отнейросетило :) конечно не знают

Lesha
15.08.2018
13:46:01
в моей демке всегда
сори, всегда думал что раз.

Kirill
15.08.2018
13:46:02
не все 10 лет на гошечке сидят
Я тоже на алефе не писал, и чо?

эко тебя отнейросетило :) конечно не знают
А? Первую фразу переведи, плиз ?

Илья
15.08.2018
13:46:54
https://geeksus.ru/wp-content/uploads/2017/10/13.jpg

Страница 1293 из 1630