Size: a a a

2020 May 21

AS

Andrew Stishenok in Go-go!
Anton Kucherov
Может в этом сервисе который их всех дергает написать proxy middleware который будет это все перехватывать? Ну или поставить между ними и этим сервисом nginx как прокси?
Просто нужно логировать кроме входящих запроса в эти "дочерние" сервисы, еще запросы и полученные респонсы на эти запросы, которые исходят из "дочерних" сервисов
Нужно это чтобы иметь логи всех "дочерних" сервисов в одном месте.
Но т.к. сервисов очень много, руками править каждый сервис не вариант
источник

AP

Andrey Privalov in Go-go!
Roman Sharkov
v := ? f.Bar.Baz[“mapkey”][5].Fuzz

эквивалентно:

v := func() *Fuzz {
 if f == nil || f.Bar == nil {
   return nil
 }
 x, ok := f.Bar.Baz[“mapkey”]
 if !ok {
   return nil
 }
 if len(x) < 6 {
   return nil
 }
 return x[5].Fuzz
}()


не согласен, что разница в читабельности есть?
сложно сказать. может быть валидацию структуры следуеть отдельно сделать, чтобы в этой функции быть увереным, что приходить все валидно
источник

AK

Anton Kucherov in Go-go!
Roman Sharkov
v := ? f.Bar.Baz[“mapkey”][5].Fuzz

эквивалентно:

v := func() *Fuzz {
 if f == nil || f.Bar == nil {
   return nil
 }
 x, ok := f.Bar.Baz[“mapkey”]
 if !ok {
   return nil
 }
 if len(x) < 6 {
   return nil
 }
 return x[5].Fuzz
}()


не согласен, что разница в читабельности есть?
Нижний вариант куда проще читается, а главное не оставляет вопросов "А что если? И как оно там внутри устроено?".
источник

AP

Andrey Privalov in Go-go!
Roman Sharkov
v := ? f.Bar.Baz[“mapkey”][5].Fuzz

эквивалентно:

v := func() *Fuzz {
 if f == nil || f.Bar == nil {
   return nil
 }
 x, ok := f.Bar.Baz[“mapkey”]
 if !ok {
   return nil
 }
 if len(x) < 6 {
   return nil
 }
 return x[5].Fuzz
}()


не согласен, что разница в читабельности есть?
что по идее дожен сделать ? ?
источник

RS

Roman Sharkov in Go-go!
Anton Kucherov
Нижний вариант куда проще читается, а главное не оставляет вопросов "А что если? И как оно там внутри устроено?".
ну это только если ты не знаком с оператором ?

как только ты понимаешь, что ? возвращает zero-value в случае если доступ не удаётся, то читать сиё довольно просто
источник

AP

Andrey Privalov in Go-go!
инициализировать мапу, вернуть нулевое значение по 5 индексу? в общем, мне тоже не очевидно
источник

RS

Roman Sharkov in Go-go!
Andrey Privalov
инициализировать мапу, вернуть нулевое значение по 5 индексу? в общем, мне тоже не очевидно
инициализировать?!
источник

AP

Andrey Privalov in Go-go!
а если у нас помимо мап, еще другие штуки есть, например указатели на коннект в БД или тип того? тут вопросов ббольше, чем удобства, мне кажется.
источник

AP

Andrey Privalov in Go-go!
Roman Sharkov
инициализировать?!
м?
источник

RS

Roman Sharkov in Go-go!
мой ? не трогает данные, он только лишь читает. Если ему не удаётся прочесть - он возвращает zero-value, false
источник

RS

Roman Sharkov in Go-go!
ровно так-же как выражение map[key]
источник

RS

Roman Sharkov in Go-go!
Andrey Privalov
а если у нас помимо мап, еще другие штуки есть, например указатели на коннект в БД или тип того? тут вопросов ббольше, чем удобства, мне кажется.
не понял
источник

RS

Roman Sharkov in Go-go!
Andrey Privalov
что по идее дожен сделать ? ?
то-же самое что и код снизу
источник

AP

Andrey Privalov in Go-go!
ну ок, может я "не в ту сторону" спросил немного. Мы хотим, чтобы ? по порядку проверял - есть ли это поле и тд. хз. может кому-то это помогло бы
источник

AK

Anton Kucherov in Go-go!
Roman Sharkov
мой ? не трогает данные, он только лишь читает. Если ему не удаётся прочесть - он возвращает zero-value, false
А в чем вообще суть вашего оператора ? какую проблему он решает? Помимо сокращения кол-ва строк кода? (что само по себе проблемой не является, т.к. код пишется людьми для людей). Я просто читаю этот оператор в примере выше примерно так: "Дорогой компилятор, вот вложенный вызов, я понятия не имею, что я делаю, разберись пожалуйста и верни мне zero-value если что-то там внутри пойдет не так".
источник

AP

Andrey Privalov in Go-go!
то есть, если f.Baz нет, он бы стразу давал false. Это я понял, Но зачем нам zero value., вот это я не понимаю
источник

AP

Andrey Privalov in Go-go!
Как оно мне "тихо" создаст сложную структуру, если у меня для нее есть какой-то код инициализации? или я напрмер ее с sync.Pool беру и тд
источник

AP

Andrey Privalov in Go-go!
То есть, сразу в голову приходят разные крайние случаи, и не один.
источник

PF

Petr Filippov in Go-go!
в go coalesce завезли?
источник

RS

Roman Sharkov in Go-go!
Andrey Privalov
ну ок, может я "не в ту сторону" спросил немного. Мы хотим, чтобы ? по порядку проверял - есть ли это поле и тд. хз. может кому-то это помогло бы
всё просто: читать пока не за’segfault’ить. Если за’segfault’ит - вернуть zero-value, fase
источник