Как стать автором
Поиск
Написать публикацию
Обновить
2
0
Eduard @Edison

Software Engineer

Отправить сообщение

я вот использую go build как линтер в редакторе, сразу видно, что и где у меня не используется и все остальные проблемы (хорошо, что компилятор очень быстрый).

Это не защита, это источник ошибок. При добавлении элемента, нужно постоянно изменять предыдущею строку, что еще и неудобно.

Это только в случае удаления последней строки, в середину тоже самое, то есть редкий кейс. Да и правильно — git diff и код ревью вам в помощь.

и уже в 1.11. Если проект не в GOPATH — по-дефолту модули включены.
> У Go есть рантайм? Или вы про стандартную библиотеку?

Рантайм рантайм — сборщик мусора, планировщик goroutine, etc. Рантайм.
Все это будет в вашем одном бинарном файле.
> Домашние проектики и десяток стартапов.

Ничего себе заявления. А вы случайно свои сайтики не в DigitalOcean хостите? А дропбоксом пользуетесь?
Все проекты в CNCF написаны на Go (а те что не были, как linkerd, переписали на Go). Вот тут у Go как раз своя ниша — все что связано с платформой.

Как бы вам не хотелось, но Go это как раз не домашние проектики.
ну тут проблема в стиле — «вот в json не нужно запятую после последнего элемента ставить, а в Go нужно, ууууу, неудобно».
@zubor правильно подметил — запятая после последнего элемента в много строчном объекте требуется специально (даже Russ Cox об этом писал), как раз из-за того, что при удалении и добавлении элементов (и генерации кода) не нужно было постоянно проверять последний ли элемент это или нет.
OpenShift сейчас самый популярный дистрибутив Kubernetes. Весь интерпрайз (типа больших банков) ломанулись внедрять стильный-модный-молодежный Kubernetes, а тут и RedHat c OpenShift — OS они им уже сапортят, связи налажены.
А еще RedHat недавно CoreOS купили со всеми их поделками (Tectonic, etcd, etc).

Судя по тому, что хотят дефолтный хендлер добавить вида handle err { return err }, то так и будет, как вы написали во втором случае

тогда можно не использовать общий хендлер и создать специальный или обработать просто с if err != nil
вариантов очень много, можете держать названия файла в структуре ошибки и потом сначала проверить тип, а потом поле с файлом
делает check с дефолтным хендлером в Go

не делает, но то что предлагают, конечно же

я не готов дискутировать на эту тему, так как не знаю как это реализовано.
Знаю что в расте оператор? или макрос try! это такая же обработка ошибочной ситуации паттерн матчингом.
Точно тоже, что делает check с дефолтным хендлером в Go или вручную с if err != nil.
действия который происходят во время ошибочной ситуации (то есть после диагностирование) есть обработка ошибочной ситуации. Возврат ошибки — это остановка дальнейшего выполнения функции/метода.

отличный комментарий.
Вы считаете, что все что в теле `if err != nil` все еще диагностирование?

Диагностирование есть часть с проверкой, обработка — это возвращение ошибки.
if err != nil { // диагностирование
    return err // обработка
}
нет, я считаю, что
* вызов дефолтного хендлера это обработка ошибки, так же как `?` в Rust — это обработка ошибки. Так же как `unwrap` это обработка ошибки — бросает панику если есть ошибка.

* будут не только дефолтные хендлеры, конечно же, хотят добавить больше возможностей (что бы добавлять контекст во все ошибки функции, например)

Я вам привел пример того, что в Rust есть «обработчик ошибки в Rust, который определяется задолго до места, в котором ошибка диагностирована»
У вас вот тут противоречие:
Задача '?' и 'try!' лишь в том, чтобы проверить результат операции и, если результат отрицательный, возвратить его в вызывающую функцию.

И
Все. Никакой обработки ошибок ни '?', ни 'try!' не задействует.

Тоже самое будет делать check c дефолтным хендлером.

Обработка реализуется в вызывающей функции посредством обычного паттерн-матчинга (либо через match, либо через if let). И, что важно, обработчик ошибки в Rust-е пишется там же, где результат операции проверяется.

Как и в Go c `if err != nil`

а что не так? Если не определять handler то будет использоваться дефолтный handle err { return nil } — как в Rust c?..
В тоже время можно определить свой в начале метода/функции или обработать ошибку в месте, где возникла if err != nil {}.

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Зарегистрирован
Активность