Size: a a a

2020 May 11

М

МишанЯ in Go-go!
Значит эта проверка нихрена не работает?
источник

М

МишанЯ in Go-go!

if events != nil{
   log.Print(events[0])
} else {
   log.Print("пусто")
}


И тут ловлю панику. Если проверять по len(events) то работает как и надо. Почему не пашет nil - не пойму.
источник

VM

Vladislav Milenin in Go-go!
МишанЯ

if events != nil{
   log.Print(events[0])
} else {
   log.Print("пусто")
}


И тут ловлю панику. Если проверять по len(events) то работает как и надо. Почему не пашет nil - не пойму.
Панику вызывают пока ваши попытки не читать текст ошибок
источник

М

МишанЯ in Go-go!
Не понял...
источник

М

МишанЯ in Go-go!
Паника пишет что не может прочитать слайс, так как в нем 0 значений. Значит не работает проверка через nil. Что тут ещё читать то
источник

VM

Vladislav Milenin in Go-go!
МишанЯ
Паника пишет что не может прочитать слайс, так как в нем 0 значений. Значит не работает проверка через nil. Что тут ещё читать то
прочтите еще раз и подумайте
источник

zl

ziggy lucid in Go-go!
МишанЯ
Паника пишет что не может прочитать слайс, так как в нем 0 значений. Значит не работает проверка через nil. Что тут ещё читать то
слайс может быть не nil, но пустой - с нулевой длиной
источник

К🇦

Коала 🇦🇺 in Go-go!
😂
источник

АП

Александр Попов... in Go-go!
источник

OK

Oleg Kovalov in Go-go!
❤️
источник

AK

Anton Kucherov in Go-go!
@dmitry_test  В Go линтер заставляет добавлять комментарии только к экспортируемым сущностям. Т.е. к публичному API, что не противоречит никаким best-practice. На основании этих комментов потом можно автоматически сгенерировать документацию. Ну и в целом публичный API без документации - это плохой API.
источник

D🦆

Dmitry 🦆 in Go-go!
Anton Kucherov
@dmitry_test  В Go линтер заставляет добавлять комментарии только к экспортируемым сущностям. Т.е. к публичному API, что не противоречит никаким best-practice. На основании этих комментов потом можно автоматически сгенерировать документацию. Ну и в целом публичный API без документации - это плохой API.
Публичный API - это то, что в бывшеназванном сваггере) А тут просто публичные члены, которые используются только в рамках проекта
источник

AK

Anton Kucherov in Go-go!
Dmitry 🦆
Публичный API - это то, что в бывшеназванном сваггере) А тут просто публичные члены, которые используются только в рамках проекта
Нет публичный API это не только то что в Свагере. В Go package исторически обладает публичным API и может быть импортирован в любой другой проект и использован.
источник

AK

Anton Kucherov in Go-go!
API это вообще не про Swagger и не про Web в широком смысле
источник

М

МишанЯ in Go-go!
ziggy lucid
слайс может быть не nil, но пустой - с нулевой длиной
Логично, поэтому и не работает nil а работает len. Это не открытие)
источник

D🦆

Dmitry 🦆 in Go-go!
Anton Kucherov
Нет публичный API это не только то что в Свагере. В Go package исторически обладает публичным API и может быть импортирован в любой другой проект и использован.
Может и будет - это вещи разные.
Естественно для библиотек я пишу комментарии.
источник

AK

Anton Kucherov in Go-go!
Dmitry 🦆
Может и будет - это вещи разные.
Естественно для библиотек я пишу комментарии.
Ну вот в Go любой пакет это библиотека (исторически и идеологически). А его экспортируемые структуры и методы, публичный API этой библиотеки. А еще в целом правило "комментировать экспортируемые сущности" не является строго обязательным. Код все равно компилируется. Так что вы можете положить пакеты которые не публичные в каталог internal (да, это название каталогов имеет специальный смысл в Go), выключить линтер и не писать комменты. В таком случае ни кто в здравом уме не станет вас упрекать в том, что у вас плохой код, потому что там нет комментариев.
источник

EK

Eduard Korolev in Go-go!
есть пакет flag и pflag. Но мне нужно в программе совместить 1 флаг и 2 параметра, т.е вот так —flag=value param1 param2. pflag достаточно чтобы в переменную получить значение —flag, а как параметры получить? в go есть для этого os.Args, но там остается и флаг тоже. Как отделить параметры от флага?
источник

СГ

Сергей Гришаев... in Go-go!
Eduard Korolev
есть пакет flag и pflag. Но мне нужно в программе совместить 1 флаг и 2 параметра, т.е вот так —flag=value param1 param2. pflag достаточно чтобы в переменную получить значение —flag, а как параметры получить? в go есть для этого os.Args, но там остается и флаг тоже. Как отделить параметры от флага?
источник

EK

Eduard Korolev in Go-go!
да, то что нужно. Только в pflag нет такой функции, возможно как-то по другому называется, спасибо
источник