А где вы прочитали что это плохо? Там не написано?)
да везде. например https://deepsource.io/blog/common-antipatterns-in-go/#1-returning-value-of-unexported-type-from-an-exported-function
Ну, так там же и написано почему это не рекомендуется
ну хочу просто разобраться, может действительно где-то в будущем наткнусь на ошибку
И в третий раз) По ссылке которую вы скинули написано, почему так не рекомендуется делать: 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.
Если вам просто нужны методы этой структуры, и вам не нужно никуда прокидывать тип или вы хотите запретить использование типа без конструктора, то делайте, почему нет... Но обычно для построения системы вам нужно знать либо тип, либо создавать интерфейс
да я понимаю это. но просто это вынесли в какой-то антипаттерн, как будто человек не поймет что тип надо поменять на экспортируемый, если компилятор вызовет ошибку
Причем тут компилятор и как-то ошибки?) Вам пакет 1 вернет неэкспортируемый тип В пакете 2 функция захочет принять этот тип - но не сможет т.к его не существует для него
Обсуждают сегодня