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

Почему плохо возвращать некэспортируемый тип(структуру)?

8 ответов

15 просмотров

А где вы прочитали что это плохо? Там не написано?)

DORIAN GRAY- Автор вопроса
Александр Костюченко
А где вы прочитали что это плохо? Там не написано?...

да везде. например https://deepsource.io/blog/common-antipatterns-in-go/#1-returning-value-of-unexported-type-from-an-exported-function

DORIAN GRAY
да везде. например https://deepsource.io/blog/comm...

Ну, так там же и написано почему это не рекомендуется

DORIAN GRAY- Автор вопроса

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

DORIAN GRAY
ну хочу просто разобраться, может действительно гд...

И в третий раз) По ссылке которую вы скинули написано, почему так не рекомендуется делать: An exported function or method returning a value of an unexported type may be frustrating to use since callers of that function from other packages will have to define a type again to use it.

Александр Костюченко
И в третий раз) По ссылке которую вы скинули напис...

Если вам просто нужны методы этой структуры, и вам не нужно никуда прокидывать тип или вы хотите запретить использование типа без конструктора, то делайте, почему нет... Но обычно для построения системы вам нужно знать либо тип, либо создавать интерфейс

DORIAN GRAY- Автор вопроса
Александр Костюченко
Если вам просто нужны методы этой структуры, и вам...

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

DORIAN GRAY
да я понимаю это. но просто это вынесли в какой-то...

Причем тут компилятор и как-то ошибки?) Вам пакет 1 вернет неэкспортируемый тип В пакете 2 функция захочет принять этот тип - но не сможет т.к его не существует для него

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
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
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта