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

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

27 ответов

39 просмотров

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

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

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", обернуть, отдать ошибку наверх. Паниковать только в крайних случаях когда программа не может продолжаться и должна немедленно упасть

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта