170 похожих чатов

Strconv.Atoi Возвращает 2 значения, существует метод с 1 значением?

27 ответов

26 просмотров

А зачем тебе, просто опусти ошибку, если не нравится

Отбросьте. Или можно обёртку на одну строку сделать.

Hokku-Я Я Автор вопроса
Тема
А зачем тебе, просто опусти ошибку, если не нравит...

да мне компилятор наглядно показывает, что не используется переменная ошибки

func must[T any](v T, err error) T { if err != nil { panic(err) } return v }

Hokku-Я Я Автор вопроса
Daniel Podolsky
func must[T any](v T, err error) T { if err != n...

спасибо за пример! но вариант выше гораздо понятнее, часть из того что Вы написали пока что не могу понять из-за отсутствия знаний по синтаксису

Hokku Я Я
спасибо за пример! но вариант выше гораздо понятн...

n := must(strconv.Atoi(s)) если случится ошибка - будет паника

Hokku-Я Я Автор вопроса
Daniel Podolsky
n := must(strconv.Atoi(s)) если случится ошибка ...

ну это я уже понял судя по тому как яро компилятор мне намекал, но всё же и данные я получаю в своей задаче гарантированно верные и существующие

Roman Sharkov
главное не абъюзить

что значит не абъюзить?

Hokku-Я Я Автор вопроса
Daniel Podolsky
тогда тем более надо must() использовать

поищу-ка свежую книжку, прохожу курс на степике, версия языка постарее будет и про must ничего нет

Hokku Я Я
поищу-ка свежую книжку, прохожу курс на степике, в...

Про must везде есть, про дженерики может и не быть Но оно тривиальное же, вполне из примера очевидное

Hokku Я Я
поищу-ка свежую книжку, прохожу курс на степике, в...

похоже на адаптацию растового unwrap, не сказать что в go это прям рекомендуется и что вы найдете это в книжках

Vadim Inshakov
похоже на адаптацию растового unwrap, не сказать ч...

facepalm.jpg func must(v int64, err error) int64 { if err != nil { panic(err) } return v } n := must(strconv.Atoi(s)) существует в языке с первого дня генерики в go синтаксически взяты из rust, да. функционально победнее, правда.

Daniel Podolsky
facepalm.jpg func must(v int64, err error) int64...

что значит существует в языке? может я упустил

Sss.
Чем победнее?)

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

Vadim Inshakov
что значит существует в языке? может я упустил

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

Vadim Inshakov
там можно выбрать, будет использована динамическая...

Динамическая диспетчеризация - это про трейты, не совсем про дженерики. По умолчанию мономорфизация. Я просто прочитал сообщение как "побЕднее", стало интересно чем

Sss.
Чем победнее?)

я невеликий спец по расту. в go дженерики только про поведение, фактически - про то, что можно в interface описать. нельзя рекурсивный дженерик сделать. ну и довольно много всяких ещё ограничений. фактически, вот этот must, и родственники его pointer[T any](v T) *T и value[T any](v *T) T - вершина полезности гошных генериков

Daniel Podolsky
я невеликий спец по расту. в go дженерики только ...

Да да, я неправильно прочитал сообщение, извиняюсь

Michael
что значит не абъюзить?

Don't panic, один из proverb'ов

да не, я понимаю, как работает этот код, но красота конструкции против безопасности (вводим допущения о том что в нашем коде не будет ошибки в оборачиваемой функции) - вообще ни разу не бест практис

Vadim Inshakov
да не, я понимаю, как работает этот код, но красот...

это не допущения, а уверенность, о чем слово must и говорит. если не уверены - не используйте

Roman Sharkov
Don't panic, один из proverb'ов

Т.е. лучше "graceful error handling", обернуть, отдать ошибку наверх. Паниковать только в крайних случаях когда программа не может продолжаться и должна немедленно упасть

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
вопрос по москвину - не понимаю вот такого вопроса похоже Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать? Две функции одинаково...
Fedor
11
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
11
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Утра доброго. Просветите пожалуйста. Хочу сделать rest сервер на делфи. Посмотрел 3 фреймворка: dmvc, Mars, mormot. Ни в одном из них не упоминается ассинхронная обработка вхо...
Сергей Бычков
10
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
вопрос странный немного... в секции interface идёт константа const TableExt: array [0..39] of record _type: byte; _ext : string; end = ( (_type:typeDAT ...
Alexey Kulakov
5
Всем привет! Помогите разобраться с Lazarus. Переношу программу с Delphi 10.2 Tokyo на Lazarus 3.2. У меня есть строка string которая изначально имеет такое содержание (то чт...
Дмитрий Завгородний
4
Карта сайта