[ b / news / + ]
Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 506 67 210
Go-тред №32 go Аноним 26/10/24 Суб 10:55:15 3308295 1
logo1.23.png 42Кб, 800x511
800x511
zig-cross-compi[...].jpg 26Кб, 400x355
400x355
Screenshot 2024[...].jpg 128Кб, 879x879
879x879
ofLdDerd6YMttNr[...].png 127Кб, 720x503
720x503
Go или Golang — компилируемый язык программирования от создателей таких шедевров, как UTF–8, язык С, UNIX, Plan9 и других. Go поддерживает типобезопасность, имеет богатую и универсальную стандартную библиотеку и инновационные семантики одновременности: все то, что мы в индустрии называем concurrency и parallelism. На сегодня язык Go является маяком стабильности, прагматичности, де-факто представляет из себя стандарт в мире бэкенд–микросервисов и серверного оркестрирования.

С чего начать:
- В обязательном порядке проходим "Go Tour":
https://go.dev/tour/welcome/1
- Читаем документацию прямо по порядку (пункт "Learning Go"): https://go.dev/doc/
- Ознакамливаемся с общим roadmap по изучению языка и сопутствующих инструментов: https://github.com/Alikhll/golang-developer-roadmap (постоянно обновляется сообществом)

Литература:
- Донован, Керниган "Язык программирования Go"
- Также хорошие книги для начала: https://www.golang-book.com/ и https://www.practical-go-lessons.com/ (веб-версия - бесплатная и хорошо подходит для новичков в программировании)
- Книги из списка: https://github.com/dariubs/GoBooks

Полезные ресурсы:
- Сборник паттернов и инфы по микросервисам: https://microservices.io/
- Смотрим видео https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSw
- Обновляемый список с пакетами: https://github.com/avelino/awesome-go

"Небольшая конфа треда" - мертва? Последний раз добавляли ссылку год назад.

Прошлый тред: >>3262042 (OP)
Аноним 26/10/24 Суб 13:40:13 3308410 2
Аноны, пилите прохладные про первую работу на го
Аноним 26/10/24 Суб 13:59:19 3308422 3
Ахахах, че за си-стайл поделка? Выглядит как язык для детей.
Аноним 26/10/24 Суб 15:05:05 3308445 4
>>3308189 →
> Пацаны, поясните за обработку ошибок. Там выше кто-то уже спрашивал, но мне кажется тема ерроров осталась нераскрыта.
>
>Допустим у меня http обработчик сидит в самом верху, дергает метод из пакета (будем считать для простоты, что у меня 1 application layer = 1 пакет) А, тот дергает метод из пакета В, тот дергает метод из пакета С. Каждый из пакетов имеет свою структуру для ошибок: ErrorA, ErrorB, ErrorC, которые я могу набивать всяким полезным контекстом, чтоб потом его высрать в тело респонса жсоном. Собственно два вопроса:
>
>1. Как лучше сделать: чтобы пакет B при получении ErrorC оборачивал ее дополнительно своей ErrorB? Или ErrorB -- это чисто ошибки, относящиеся к самому пакету В? В первом случае вроде получается чето более-менее похожее на нормальный стектрейс, если у всех ошибок будет допустим какое-то поле Cause error, но тогда наверху у меня всегда будут только ошибки ErrorA, и если мне нужно разное поделать в зависимости от того, что же там за real cause была -- будет неудобно. Во втором случае стектрейса никакого нахуй нет, как такие ошибки например логгировать с пользой -- непонятно, но код проверки ошибок в обработчике становится хотя бы поприятнее.
>
>2. В обоих этих случаях выходит так, что обработчик должен быть в курсе обо всех ошибках, которые могут произойти во всем ебаном приложении, то есть он должен знать и про ErrorA, и про ErrorB, и про ErrorC. Чето я слабо себе представляю, как такой подход будет скейлиться, если аппка становится хоть сколько-то большой (ну там на пару десятков эндпоинтов хотя бы). Какие есть альтернативные варианты? Я сам чето ничего не надумал более умного.


Вот тут поддвачну. Есть примеры проектов на гитхабе, где обработка ошибок в классическом круд приложении сделана по уму? Плюс еще хотелось бы видеть типизированные ошибки. Например отдать ошибку с человекочитаемым сообщением. Сейчас у меня на проекте заводится отдельный класс исключения, куда я явно устанавливаю сообщение об ошибке, которое само при помощи магии фреймворка прокидывается из сервиса в контроллер, сериализуется и уходит на фронт в виде джейсончика.

Если же я буду все ошибки сервиса отдавать в виде одной структуры type ServiceError struct, то рано или поздно может случиться так, что в контроллере понадобится разная обработка сервисных ошибок и я пососу хуй. Если же буду заводить отдельную структуру на каждую ошибку бизнес-логики, то контроллер вырастет в размерах просто до огромных размеров и его станет невозможно поддерживать.

В общем нужны примеры как с этой хуйней бороться. Ну и то же самое с ошибками от репозитория. Тоже несколько структур заводить? И каждую из них потом обратабывать сначала в сервисе, а потом в контроллере? Тяжело....
Аноним 26/10/24 Суб 15:37:01 3308469 5
>>3308445
Мимо прохожу, интересуюсь, а задача на каком то из верхних уровней тут ошибку разбирать или что?
Я работал в проекте где с нижнего уровня ошибка заворачивалась в fmt.Errorf("some_func error: %v", err)
Получался такой вот импровизированный стектрейс, а на верхнем уровне перед отдачей ошибки в response это приводилось к единой структуре ошибки
type ResponseError struct {
ExternalCode int32
InternalCode int32
ExternalDescription string
InternalDescription string
IsTemporary bool
}
По InternalCode быстро находилось верхняя точка косяка, а далее по описанию ошибки разбираем в чем проблема
По ощущениям для средних проектов хватает, дальше это можно будет улучшить через Wrap и тп
Аноним 26/10/24 Суб 16:13:01 3308490 6
>>3308295 (OP)
Просто мимо треда шел, но увидел третью пикчу...
А за что что вы того розового узкоглазого хомяка аж огнеметом палите? Это маскот какого-то очень очень кривоуебищного пакета в го вашем?
Аноним 26/10/24 Суб 16:22:50 3308496 7
animatedf3zs1vy[...].gif 84Кб, 350x350
350x350
>>3308410
Хорошая работа была. Если бы сейчас там работал, 300к бы получал в месяц, пипец.

>>3308422
Откуда ты вылез..
Аноним 26/10/24 Суб 16:51:54 3308513 8
>>3308469
>на верхнем уровне перед отдачей ошибки в response это приводилось к единой структуре ошибки
Разверни чуть подробнее, каким образом вы выхлоп Error() приводили к этой структуре? Или респонс код и прочее сказу зашивали на этапе выброса первичной ошибки?
Аноним 26/10/24 Суб 18:40:44 3308561 9
image.png 987Кб, 600x766
600x766
Человек-эксепшен на месте!
Аноним 27/10/24 Вск 00:01:52 3308653 10
Лучший тред про лучший язык
Аноним 27/10/24 Вск 00:57:53 3308662 11
>>3308490
>Это маскот какого-то очень очень кривоуебищного пакета в го вашем?
То есть каждого пакета как и языка в принципе?
Аноним 27/10/24 Вск 10:01:45 3308767 12
>>3308513
Просто записывали в InternalDescription
Так как нам от ошибки ничего большего, чем стектрейс через строки и internal сode для быстрого нахождения косяка на верхних уровнях, не было нужно, то мы просто написали пачку конструкторов для разных http статусов (которые ExternalCode)
Аноним 27/10/24 Вск 18:32:27 3309075 13
>>3308767
Ну я это представляю так, что как минимум у меня могут быть ошибки клиента, и могут быть мои серверные ошибки. Ошибки клиента я хочу НЕ логгировать, резолвить в подходящий 4xx код и возвращать жсоном с мессаджем и какими-то полями; ошибки сервера я наоборот хочу логгировать, резолвить в 500, клиенту отдавать либо тоже что-то кастомное, либо дефолтное "что-то пошло не так", а в лог писать стектрейс и опять же какой-то контекст ошибки. При этом контекст ошибки может собираться и из контекстов обернутых ошибок
Аноним 28/10/24 Пнд 07:37:22 3309242 14
17018549163750.jpg 657Кб, 1080x1350
1080x1350
Аноним 28/10/24 Пнд 09:32:25 3309271 15
Снимок экрана 2[...].png 157Кб, 1750x918
1750x918
>>3309075
Я на своем проекте пришел к такому костылю. Не знаю насколько правильно, но структура вот такая. Дальше в логгере я сохраняю Internal, а юзеру отдаю Message (который чаще всего либо стринга, либо массив с набором ошибок)
Аноним 28/10/24 Пнд 09:43:04 3309277 16
>>3309075
Вот там в структуре есть поле ExternalDescription для юзверя и Internal для логов, такая же идея и в >>3309271
Аноним 28/10/24 Пнд 12:12:29 3309415 17
>>3309271
Стектрейс бы ещё прикреплять
Аноним 29/10/24 Втр 13:30:35 3310353 18
Аноним 29/10/24 Втр 14:00:30 3310397 19
>>3310353
А для чего он дизайнился, для перфокарт? Эксепшены в 2024 году - это общепризнанная фича, очень удобно бросить и поймать где-то наверху, а не засирать код err != nill после каждого вызова.
Аноним 29/10/24 Втр 14:12:52 3310423 20
>>3310397
Для замены инфраструктурных сервисов на гуглостайловом плюсоговне, а не для джава тырпрайза с джейсонами и исключенияи?
Аноним 29/10/24 Втр 19:03:15 3310782 21
>>3310423
@
Дедам дали волю наговнить свою мечту из 70х годов, написать свой си
@
Деды продали идею гуглу, что сделают простой си, что даже самый тупой сможет на нем писать как плюсовик +30 лет стажа.
@
Как это бывает, фантазий на новый язык было только на какие-то базовые вещи, остальное пришлось прикрутить наспех и необдуманно ибо деды умеют мечтать, а проектировать языки не умеют.
@
Идею что даже самый тупой будет писать на уровне бородатого плюсовика попытались продать кабану
@
Но что-то пошло не так
@
Теперь рынке требуются только бородатые гошники, из-за дефицита ценник как у кобола.
@
Джуны стоят внизу и облизываются.
@
Гошники на перегонки косплеят эксепшены, костылят кодогенирацию, радуются бойлерплейтам.
Аноним 29/10/24 Втр 21:41:38 3310899 22
1. Какая у вас мотивация вката в го? Бабло?
2. Что вообще на гошке пишут?
3. Как ситуация с джунами?
Аноним 29/10/24 Втр 21:53:46 3310904 23
Аноним 29/10/24 Втр 22:04:58 3310908 24
>>3310899
Да.
Всё пишут, любой веб и всё, что связано с облаками.
Джуны не нужны. Вообще нахуй не нужны, вкат только на мидла.
29/10/24 Втр 22:38:26 3310926 25
animatedf3zs1vy[...].gif 1281Кб, 350x350
350x350
>>3310899
1. Когда начинал - выбирал язык для своего проекта, на бабло вообще не смотрел.
2. Бэкенды к чему угодно.
3. Если они программисты из-за денег - наверно, им сложно.
Аноним 29/10/24 Втр 23:04:16 3310938 26
>>3310926
>для своего проекта
Ты сервис какой-то пилишь? Уже работал до этого прогером или имел опыт прогерства? Устроился на работу?
Аноним 30/10/24 Срд 06:56:38 3311072 27
>>3310899
1. Пока работа в бигтехе. Накапает опыт в резюме и съебу нахуй
2. Микросервисы в основном
3. Джунов на го не существует, кроме выпускников ВУЗов в бигехах. Все гошники - перекатыши из пыхи и джавы
Аноним 30/10/24 Срд 12:43:16 3311346 28
animatedf3zs1vy[...].gif 84Кб, 350x350
350x350
>>3310938
Не, делал игру-бродилку тогда, давно было. Опыта всякого имел, но на тот момент ещё не работал - на этом языке первую работу и нашёл. С тех пор устраивался неоднократно.

>>3311072
>Все гошники - перекатыши из пыхи и джавы
Ну, может так было лет 5-7 назад, сейчас вряд ли.
Аноним 30/10/24 Срд 14:43:08 3311466 29
Начал учить го и появились вопросы:
А че вы трай кетч вырезали к фигам, да и throw тоже? Вас не задолбало писать if err != nil { log }?
Почему вместо while loop используется for ? Честно, очень путает

Пока что это все вопросы, но они не дают покоя. Вчера плохо спал т.к. думал над этими "гениальными" решениями
Аноним 30/10/24 Срд 15:24:55 3311516 30
>>3311466
Потому что try/catch это goto, скрытый, с неявным назначением, запутыванием стектрейса, обработкой ошибок в другой части кода.
Всё от минимализма, и всё понятно, если узнать, что Го делали во многом те же люди, что работали над С. Ну и в целом многие вопросы по гошке отваливаются сами собой, если есть знание чистого си.
Аноним 30/10/24 Срд 15:58:02 3311556 31
>>3311466
> Почему вместо while loop используется for ? Честно, очень путает
А че с этим не так, просто вместо while пишешь for и все
Аноним 30/10/24 Срд 16:24:20 3311610 32
>>3310782
Как замена https://google.github.io/styleguide/cppguide.html для всяких сетевых штук, которых надо писать посто дохуя, го заебись и решает задачи. А то, что там веб-макаки начали го засовывать во все дыры - это уже не проблема дезигна.
Т.е. вот это пишут на говне https://github.com/XTLS/Xray-core и им заебись
Аноним 30/10/24 Срд 18:14:53 3311707 33
>>3311610
Ну то есть го нужен для 1.5 сетевых утилит в гигакорпорациях уровня Гугла и Яндекса?
Аноним 30/10/24 Срд 19:03:53 3311770 34
>>3311610
Там уже подрачивают на раст (мне лень искать статью), походу го ждет судьба дарта.
Аноним 30/10/24 Срд 20:44:03 3311858 35
А есть у вас какие то предпочтения по библиотекам которые вы используете в каждом проекте? Ну как некий стандарт, чтобы не переизобретать колесо? Может worker pool, errgroup, какие то ещё штуки? Может ent какой.

Пока я смотрю на го и ощущение что все кроме фреймворка (echo, gin) пишется с нуля используя stdlib. Да и фреймворки судя по реддиту тоже не любят.
Аноним 30/10/24 Срд 22:01:04 3311950 36
>>3311858
>все кроме фреймворка (echo, gin) пишется с нуля используя stdlib
Стандартной библиотеки за глаза.
Лучший язык как никак
Аноним 30/10/24 Срд 22:31:29 3311975 37
В Гугле Go это замена Python для SRE. Для написания инфраструктуры - C++, приложений - Java/C++.
Аноним 30/10/24 Срд 23:24:26 3312007 38
>>3311858
Из того что сразу в голову приходит:
В го нет нормального стектрейса в стандартной либе . Мне нравиться emperror.
Нечто более специфичное но мне нравится- grpc-gateway вместо веб фреймворка. Генерит сразу реверс прокси, сваггер, ну и протобуфные штуки. Кайф короче
Аноним 30/10/24 Срд 23:30:18 3312011 39
Чото не кликает у меня в голове голанг. Не понимаю, как писать, чтобы в итоге не получалось какое-то месиво. Из того, что прям вызывает максимальное отторжение:

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

- Отсутствие нормальных неймспейсов. В традиционных ООП языках все можно красиво рассовать по пакетикам и классикам, каждый из которых автоматически родит новый неймспейс для всего, что внутри. В го по факту пакеты это единственный способ родить неймспейс, ничего мельче нету. Сами пакеты внутри представляют собой какие-то солянки всякой всячины, наваленной в кучу по принципу "ну вроде из той же оперы". Ублюдочное решение с capitalized названиями функций/переменных для определения их визибилити.

- Работа со строками и массивами с каких-то хуев идет не через прицепленные к ним методы, а через strings и slices. Я хуй знает, может я чего-то не понял, но мне чето кажется, что говно в духе strlen, strncpy и прочее просто нахуй не должно существовать в новом языке, когда очевидно, что s.length и s.substring() выигрывают в читабельности и удобстве на порядки.

- Абсолютно надуманная нахуй не нужная еботня с pointer vs value.

- Работа с ошибками. По факту предлагается на выбор два сорта говна, которые можно еще и смешивать между собой - sentinel values и создание кучи абсолютно одинаковых структур под разные типы ошибок. Первый подход еще можно использовать без рвотных позывов благодаря errors.Is(), но при необходимости в таком случае достать дополнительный контекст ошибки начинается трахомудия. Второй подход более гибкий, если это слово сюда вообще применимо, но проверка типа ошибки через errors.As() это ебаный кал собаки, раздувающий сервисы/хэндлеры до космических размеров на ровном месте.

- Крайняя невыразительность языка. Даже тернарника нет, ебаный стыд. Вечная еботня с шэдоуингом ерроров, возвращаемых вторым значением в кортеже. Идиотская надуманная разница между = и :=.

Пока что понравилось по большому счету только принудительное форматирование кода из коробки к единому стилю, и каноничные табы вместо пробелов для отступов.
Аноним 31/10/24 Чтв 00:06:09 3312028 40
>>3312011
Чувак, Го - низкоуровневый язык.
С великолепной поддержкой конкурентного программирования.
И интерфейсы - тоже одна из главных киллер-фич, ты просто не понял нихуя.

Но, да, язык очень сильно не для всех. И точно не для вката с улицы.
И с неймспейсами (с их отсутствием) они лоханулись капитально.
Вообще - язык очень сырой, выглядит как грязный хак, который делали для внутреннего употребления, а потом отпустили на волю. Типа Котлина, не к ночи будь он помянут.
Аноним 31/10/24 Чтв 00:26:22 3312037 41
>>3312028
>Чувак
Уже достаточно.
>Го - низкоуровневый язык
Ну началось в колхозе утро. Что в нем низкоуровневого, расскажи? Тот факт, что надо явно таскать за собой указатели и/или каждый раз думать, нужно ли мне передать в функцию конкретно эту структуру или ее копию? В языке со сборщиком мусора эта ебола вообще нахуй не нужна. Ах да, сборщик мусора.Плюс решать, где ты будешь размещать структуру - на стеке или в куче - здесь тоже нельзя. В чем тут низкоуровневость?
>И интерфейсы - тоже одна из главных киллер-фич, ты просто не понял нихуя.
Возможно. Зато я вижу, что я никак не могу в компайл-тайм проверить, что моя структура реализует интерфейс. Вернее могу, но через жопу, специальным var _ MyInterface = (*MyStruct)(nil) заклинанием. Просто заебись.
>И точно не для вката с улицы
Мне и после 10 лет жабы, питона и жабаскрипта все вышеобозначенные вещи кажутся полной ебанутой хуйней.
Аноним 31/10/24 Чтв 00:44:41 3312054 42
>Мне и после 10 лет жабы, питона и жабаскрипта все вышеобозначенные вещи кажутся полной ебанутой хуйней.

Это другой язык, понимаешь?
Не лучше, не хуже, а другой.
И его надо учить, а не думать, что тебе и так всё должно быть понятно.

Это сложный язык, и очень сильно не для всех.
И тебе он, скорее всего, не нужен. Как и мне.
Аноним 31/10/24 Чтв 00:51:44 3312060 43
А может мне кто-нибудь пояснить про контексты в го? Я понимаю что они нужны для отмены горутин, но зачем создавать context.Background в функции main?

Вроде как это нужно для graceful shutdown, чтобы при sigterm отменить все задачи. Но бекграунд пустышка, она не умеет отменять. Почему бы просто тогда не создавать отдельные контексты на уровне хендлера сервера?

И это правда, что все функции что работают с сетью, бд и файлами всегда должны иметь контекст первым аргументом? Как вы делаете?
Аноним 31/10/24 Чтв 01:03:48 3312063 44
>>3312011
> Утиные интерфейсы
> глянуть сигнатуру класса и узнать, что именно он реализует
Потому что класс может дохуя всего имплементировать и их явное указание сильно засрало бы код, а для понимания какие структуры какие интерфейсы реализуют есть IDE

> Работа со строками и массивами с каких-то хуев идет не через прицепленные к ним методы, а через strings и slices.
Вот на это кстати как будто насрать в проде, там не нужна вся эта изощренная ебля со строками/массивами

> Даже тернарника нет
А вот тернарников да, иногда не хватает

> Отсутствие нормальных неймспейсов
Бля, да, а вот это мем, я когда понял что чтобы написать +- норм либу, нужно все срать на верхнем уровне проекта, я немного охуел)

> Вечная еботня с шэдоуингом ерроров
А как это мешает? Мне это только пару раз помешало, пришлось первый аргумент до вызова функции в var объявить

Лично меня нередко калит херня с маппингом структур, а-дя DTO и external версия одной и той же структуры (которые отличаются наличием полей id и deleted в dto версии), но я хз как это в других ЯП делается

На истину не претендую, я мимо студентик-стажер
Аноним 31/10/24 Чтв 01:07:10 3312066 45
>>3312060
Контекст крутая идея как по мне. Да, он везде должен пробрасываться. Помимо того что он может быть закэнселен, в него также можно складывать всякое. Это бывает удобно, у нас на проекте например взаимодействие некоторых gprc сервисов через это реализовано. Типа в некоторых интерсепторах грац в контекст складывается нужное валью (например какая нибудь метаинформация с фронта) и передается дальше
Аноним 31/10/24 Чтв 01:10:38 3312068 46
>>3312060
> Но бекграунд пустышка, она не умеет отменять
Потому что для глобального graceful shutdown всех модулей/сервисов нужно создавать context.WithCancel(context.Background())
Аноним 31/10/24 Чтв 14:36:31 3312611 47
image.png 6Кб, 754x80
754x80
Скажите, почему хеллоу ворд на шарпе (AOT компиляции в бинарник) весит почти два раза меньше чем гошный хеллоу ворд?
И мне при этом не надо трахаться с err != nil
Аноним 31/10/24 Чтв 17:10:19 3312734 48
>>3311770
>подрачивают на раст
Издалека, как и мы все, ибо он страшный как ассэмблер блядь.

Мне почему-то ГО всегда казался "более быстрым питоном" чтоб можно было быстро нахуярить программу, в чём я не прав? (не считая обилия библиотек)
Аноним 31/10/24 Чтв 17:14:13 3312738 49
>>3312007
>emperror
> // Recover from panics and handle them as errors
>defer emperror.HandleRecover(handler)

Из каждого утюга же пиздят что не надо рековерить го ерроры и надо с каждой ошибкой вручную ебаться
if err != nil
, врут?
Аноним 31/10/24 Чтв 17:14:20 3312739 50
>>3312611
Потому что рантайм у гошки массивный? Ты там GMP-машину в хелло ворлд тащишь, очевидно же. Потому же и либы на го не пишут для использования в не гошной кодовой базе.
Аноним 31/10/24 Чтв 17:17:19 3312742 51
>>3312734
Нахуярить быстрее чем на питоне? Не. Попробуй посмотреть на него как на С, на который высыпали самосвал сахара.
Аноним 31/10/24 Чтв 18:02:51 3312790 52
>>3312738
Без понятия, таким не пользуюсь и паниками тоже (только в редких случаях). Я говорил скорее про emperror.Wrap и emperror.WithStack
Аноним 31/10/24 Чтв 18:12:42 3312804 53
animatedf3zs1vy[...].gif 84Кб, 350x350
350x350
>>3312011
Про интерфейсы и неймспейсы - ну, а с "классами" получается не лучше, по-моему.

>Ублюдочное решение с capitalized названиями функций/переменных для определения их визибилити.
Да вроде нормальное.

>Абсолютно надуманная нахуй не нужная еботня с pointer vs value.
Типа, "программист вообще не должен задумываться над подобным выбором"?)) Для таких существуют ЯваСкрипты и прочие Явы.

>Даже тернарника нет, ебаный стыд.
Да и ладно, он же затрудняет чтение.

>>3312028
>Вообще - язык очень сырой, выглядит как грязный хак
Мне тоже начало так казаться со временем. Но, блин, а проекты на других языках, когда разрастаются, что ли выглядят лучше? Я очень сомневаюсь - это судьба всех языков...

>>3312742
Ну, не "сахара", а важных достаточно вещей.
Аноним 01/11/24 Птн 00:12:14 3312997 54
Аноним 01/11/24 Птн 02:55:11 3313024 55
Под wasm кто писал? Какие подводные?
Аноним 02/11/24 Суб 14:40:45 3314307 56
Сап дроч, решил основательно засесть за этот язык. Сейчас дошёл до net/http и нихуя не понимаю!

http.ListenAndServe(":3000", nil) // вот тут запускает локальный сервер на порте 3000?

http.HandleFunc("/", myHandler) // - тут подрубается какой-то handlefunc, который типо обрабатывает подключение клиента по url-у "localhost:3000/", и как только обнаруживает подключение - выполнится скопированная функция myHandler

func myHandler(w http.ResponseWriter, r http.Request) {
log.Println("hi from Handler!")
w.WriteHeader(http.StatusOK)
} // но что такое ResponseWritter и
http.Request? Почему *http.Request передаётся по ссылке?

Извиняюсь за тупые вопросы, но нагуглить ничего не могу.
Некоторые ещё подрубают какой-то ServeMux, где вообще становится не понятно. Пишут, что ServeMux - маршрутизатор, но что он маршрутизирует, чем он управляет, если даже без него код работает также, как и с ним.
Аноним 02/11/24 Суб 15:42:15 3314351 57
>>3314307
// HandleFunc регистрирует handler в глобальный DefaultServeMux (net/http/server.go)
// http.ListenAndServe без второго аргумента слушает твой адрес и передает роутинг DefaultServeMux
// http.Request указатель на объект запроса; ResponseWritter интерфейс (поэтому без указателя, он и так им является) на объект для создания ответа

// Можно создать свой ServeMux и регистрировать в него handler'ы, а после передать в ListenAndServe
Аноним 02/11/24 Суб 15:59:57 3314367 58
>>3314307
Не хочу быть снобом, но ты меня вынуждаешь друг. Это все stdlib, у которой довольно неплохое описание в исходниках и документации. Погляди.
Аноним 02/11/24 Суб 16:01:07 3314369 59
>>3314351
Начнём с самого начала.

>HandleFunc регистрирует handler в глобальный DefaultServeMux (net/http/server.go)
Что значит "HandleFunc регистрирует handler"? Какой handler, что это. Если регистрирует, то откуда-то его берёт, но откуда. И что это.
Что значит "глобальный DefaultServeMux"? Что вообще такое ServeMux, какую функцию выполняет?

>http.ListenAndServe без второго аргумента слушает твой адрес и передает роутинг DefaultServeMux
Без второго аргумента оно не работает это раз; два - что значит роутинг; три - что такое DefaultServeMux. Зачем туда что-то передавать.

>http.Request указатель на объект запроса; ResponseWritter интерфейс (поэтому без указателя, он и так им является) на объект для создания ответа
"http.Request указатель на объект запроса" - что такое объект запроса, зачем он нужен.
Что значит "на объект для создания ответа". В смысле объект.

>Можно создать свой ServeMux и регистрировать в него handler'ы, а после передать в ListenAndServe
Спасибо за совет, но ничего не понятно.

Мне гораздо проще понимается всё на практике, можешь посоветовать где всё это можно было-б прочитать и протестить.
Аноним 02/11/24 Суб 16:09:21 3314373 60
image.png 141Кб, 1500x1041
1500x1041
>>3314367
Ну и что мне этот текст даёт? Что читать то, а? Меня интересует ответ на ворпос, что это за рандомные и не понятные функции >>3314307, что каждая из них делает. Имею ввиду не под капотом, а просто понять на поверхностном уровне.
Аноним 02/11/24 Суб 16:12:22 3314379 61
image.png 133Кб, 1711x687
1711x687
Аноним 02/11/24 Суб 16:15:11 3314383 62
>>3314369

Че там не работает без второго аргумента у тебя? Все работает у всех
Аноним 02/11/24 Суб 16:18:21 3314389 63
image.png 30Кб, 1049x178
1049x178
Аноним 02/11/24 Суб 16:20:38 3314392 64
>>3314389

Ну nil ебни туда по кайфу
Аноним 02/11/24 Суб 17:36:50 3314440 65
>>3314369
Буквально все это можно спросить и чатгпт анон. Так ты не будешь тратить время многоуважаемых голанг наносников итт, а еще и объяснят лучше.
Аноним 02/11/24 Суб 17:50:17 3314451 66
>>3311346
>1.5 джуновских вакансий на хх
понял тебя
Аноним 02/11/24 Суб 18:49:15 3314492 67
>>3314373
Ты просто тупой. Не нужен тебе го.
Аноним 02/11/24 Суб 20:31:26 3314564 68
>>3312028
>Го - низкоуровневый язык
В каком месте?

>>3312028
>язык очень сильно не для всех
А для чего и для кого он? Вон выше скидывали пример XTLS-Xray как сетевой утилиты, написанной на го. Но таких вещей делают 1.5 команды в мире.
В России го зачем-то используют для крудов, которые раньше писались на джаве, шарпе и питоне. И мне кажется для крудов это сильно плохой выбор, начиная самим всратым языком, заканчивая весьма убогим тулингом для написания классических бекендов с походами в базу данных. Да, можно все писать на голом net/http, и я так пробовал, но получается хуйня, объемы бойлерплейта раздуваются просто до космических масштабов.
Аноним 02/11/24 Суб 20:33:31 3314567 69
>>3312037
>Зато я вижу, что я никак не могу в компайл-тайм проверить, что моя структура реализует интерфейс. Вернее могу, но через жопу, специальным var _ MyInterface = (*MyStruct)(nil) заклинанием

Двачую, тоже раздражает эта хуйня.
Аноним 02/11/24 Суб 21:21:13 3314590 70
>>3314564

А что именно раздувается? Пример покажи пожалуйста
Я написал вот небольшой сервис, но напряга супер не заметил.
Конечно на шарпе половина бы само сгенерилось, но хз как-то
Аноним 02/11/24 Суб 21:39:40 3314594 71
>>3314590
>А что именно раздувается
Обработка ошибок.

Работа с ошибками. По факту предлагается на выбор два сорта говна, которые можно еще и смешивать между собой - sentinel values и создание кучи абсолютно одинаковых структур под разные типы ошибок. Первый подход еще можно использовать без рвотных позывов благодаря errors.Is(), но при необходимости в таком случае достать дополнительный контекст ошибки начинается трахомудия. Второй подход более гибкий, если это слово сюда вообще применимо, но проверка типа ошибки через errors.As() это ебаный кал собаки, раздувающий сервисы/хэндлеры до космических размеров на ровном месте.
Аноним 02/11/24 Суб 23:48:34 3314619 72
>>3312011
>- Утиные интерфейсы.
Это отдельный пиздец, особенно если структура гуляет через методы где тип пустой интерфейс отдельная тема, тогда узнаешь о том что не имплементирует в рантайме. Какой вообще долбоеб додумался до такой хуеты, чтобы он каждый раз узнавал что его туалет не имплементриовал туалетную бумагу каждый раз когда он посрет

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

>- Работа со строками и массивами с каких-то хуев идет не через прицепленные к ним методы, а через strings и slices. Я хуй знает, может я чего-то не понял, но мне чето кажется, что говно в духе strlen, strncpy и прочее просто нахуй не должно существовать в новом языке, когда очевидно, что s.length и s.substring() выигрывают в читабельности и удобстве на порядки.
Ты еще более интимно со слайсами не познакомился, при присвоении другой переменной там не всегда понятно ты со старым работаешь или создался новый. Это такой кривой дизайн

>- Абсолютно надуманная нахуй не нужная еботня с pointer vs value.
Это кстати наоборот полезная вещь когда знаешь что передал конкретно ссылку и конкретно значение, это позволяет избежать дополнительного выделения памяти, особенно когда гоняешь одну и ту же структуру по калопроводам бизнес логики

>- Работа с ошибками.
Это говно ебучее, с той же философией сделали в расте и оно удобнее когда вместо бойлерплейта наверх пробрасываешь при помощи ? но там проблема что разные типы друг в друга не впихуются и приходится брать anyhow или колхозить свой тип ошибок и писать From для каждого типа, которых собираешься впихнуть, тоже говнясто, но уже лучше чем в go.
Этот подход с ошибками с одной стороны хорошо ты начинаешь обрабатывать ошибки которые мог бы не учесть при исключениях и уже добавляешь нужное поведение. С другой стороны для обычного бекенда чтобы гонять json туда-сюда это крайне избыточно, такое хорошо наверное где требуется высокая паранойя и ответственность чтобы не одна ошибка не проскочила. В остальных случаях проще наверху ловить в try/catch ролбекать транзакцию и посылать нахуй клиента. В той нише куда залетел го я думал лучше было бы второе.


>- Крайняя невыразительность языка. Даже тернарника нет, ебаный стыд. Вечная еботня с шэдоуингом ерроров, возвращаемых вторым значением в кортеже. Идиотская надуманная разница между = и :=
Ну тут типа философия го, типа ты можешь что-то сделать только одним способом, плюс делали акцент на том что язык простой и понятный для всех, поэтому в нем много чего нет. Да и морж оператор хуйня согласен
Аноним 03/11/24 Вск 00:01:44 3314622 73
>>3312028
>Го - низкоуровневый язык.
Ну как сказать, чуть пониже жабы да, но в целом та же хуйня

>С великолепной поддержкой конкурентного программирования.
Даже в js с промисами удобнее работать чем с горутинами, тут столько косяков в дизайне

>И интерфейсы - тоже одна из главных киллер-фич
Действительно иногда в процессе выполнения бывает киллер-фича

>Но, да, язык очень сильно не для всех.
Проблема в том что его везде стали использовать

>Типа Котлина, не к ночи будь он помянут.
Они там упоролись по-другому. Основное это вендорлок, без их ide работа с языком затруднена и jvm это просто финиш, теперь туда пришли спринг и копроративное болото. Могли бы вместо всякой компиляции в js запилить kotlin native чтобы работать без жвм и сделать менее прибитым к ide и в целом к своей компании, тогда и взлетел бы повыше.
Аноним 03/11/24 Вск 00:05:27 3314625 74
>>3314564
>В России го зачем-то используют для крудов, которые раньше писались на джаве, шарпе и питоне.
Скорее всего попробовали дать жабистам пописать на нем, а синтаксис не дает размахнутся с AbstractSingletonProxyFactoryBean, вот и получилось написать за несколько дней то что раньше писалось несколько месяцев на жабе, кабанчикам понравилось и понеслась
Аноним 03/11/24 Вск 03:57:26 3314661 75
>>3314619

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

Можно какой то более конкретный пример когда это проблема? Я искренне не понимаю ситуации где функция должна принимать пустой интерфейс а не конкретный. Звучит как хуевый дизайн самого метода/сервиса
Аноним 03/11/24 Вск 10:13:57 3314758 76
>>3314661
>Звучит как хуевый дизайн самого метода/сервиса
Звучит как примерно 90% кодовой базы. Я часто вижу, что интерфейсов либо нет, и всё захардкожено, либо везде var 🤡 interface{}
Аноним 03/11/24 Вск 13:21:17 3314887 77
>>3314661
Проблема в том что ты не всегда живешь в идеальном мире и код не всегда написан тобой и иногда приходится видеть такое. Ну и плюс сторонние либы чуть менее чем полностью состоят из пустых интерейсов.
То что с нуля пишется разумеется уже имеет лучшую архитектуру и адекватный код
Аноним 03/11/24 Вск 17:16:55 3315021 78
>>3314758
>interface{}
В чём он не прав? Вместо ебли с определениями
Аноним 03/11/24 Вск 17:35:26 3315041 79
>>3315021
А зачем тогда нужен язык со статической типизацией? Проще питон взять.
interface{} это все равно что указатель на void в Си использовать. Или Object из джавы.
Аноним 04/11/24 Пнд 01:49:01 3315250 80
>>3315041
>А зачем тогда нужен язык со статической типизацией?

Говорят тогда будет работать на 0.1234 ns быстрее всё если типы прямо указывать, не зря ебёмся же
Аноним 04/11/24 Пнд 07:12:51 3315294 81
Привет, а что по фреймворкам в Го? Какой брать для веба?
Аноним 04/11/24 Пнд 13:47:10 3315542 82
animatedf3zs1vy[...].gif 84Кб, 350x350
350x350
Аноним 04/11/24 Пнд 13:55:27 3315555 83
Goвно
Аноним 04/11/24 Пнд 14:07:56 3315569 84
>>3314622
>Они там упоролись по-другому. Основное это вендорлок, без их ide работа с языком затруднена и jvm это просто финиш, теперь туда пришли спринг и копроративное болото. Могли бы вместо всякой компиляции в js запилить kotlin native чтобы работать без жвм и сделать менее прибитым к ide и в целом к своей компании, тогда и взлетел бы повыше.
Котлин теперь основной язык разработки под андроид. Это огромный кусок рынка. И начинался он именно как better Java, чтобы реализовать синтаксисический сахар, но так чтобы всё работало на Dalvik. В бекенд он пришёл сильно позже и это уже была попытка ЖБ как-то ещё пристроить язык и продавать свои IDE. И в целом, там где пишут а не переписывают с Jaca бэк на Котлине Спринг не используют.
Аноним 04/11/24 Пнд 15:29:16 3315670 85
А как вы структурируете свои сервера и веб сервисы? Что посмотреть-почитать?
Аноним 05/11/24 Втр 07:18:43 3316165 86
>>3314492
Но создатель языка сказал что го для тупых?
Аноним 05/11/24 Втр 07:31:11 3316170 87
>>3314622
>прибитым к ide и в целом к своей компании,
Жаба прибита все к той же IDE, но никто об этом не кричит.
выбрал шарпы для своих проектов, только потому что нормальная поддержка в трех крупных редакторах
Аноним 05/11/24 Втр 07:36:10 3316173 88
>>3314625
Звездеж, жабист/шарпист со спрингом/asp.net за минуту разворачивает то, что на го еще даже не написано еще.

Го пытались продать как язык для тупых, мол кабан получить тру-кодеров по цене суслика. Но деды родом из 70х не писавшие реального кода 50 лет не знали, что главная сложность в современной разработке это не синтаксис.
Аноним 05/11/24 Втр 07:40:29 3316174 89
>>3315294
На го не пишут реальный веб, там микро-писька кидающиеся json'нами, что-то больше на нем писать на можно, но больно, поэтому до сих пор нет норм веб комбайна. естественно будут кричать ненужно, все чего нет всегда кричат ненужно, как и дебаггер не нужен был, как и дженерики, как и обработка ошибок итд
Аноним 05/11/24 Втр 07:42:17 3316178 90
>>3315569
Котлин лишь обосрался с тем, что на jvm больше (практически) не начинают бэкенд проекты.
Аноним 05/11/24 Втр 09:10:47 3316225 91
>>3316178
>на jvm больше (практически) не начинают бэкенд проекты
Этим мантрам уже лет 10.
>2 978 вакансий «Java»
>1 157 вакансий «C#»
>1 696 вакансий «Go»
Аноним 05/11/24 Втр 10:36:12 3316311 92
>>3314758
>>3314887
Не ну это объективно пиздец. Я придумал случай, когда метод реально должен принимать any. Это работа со всякими маршелерами/анмаршелерами. Но пихать везде эни когда можно нормально описать интерфейс это просто треш
Аноним 05/11/24 Втр 14:06:45 3316613 93
>>3316225
У тебя бот сломался, неправильный триггер.
Аноним 05/11/24 Втр 14:35:50 3316642 94
Аноним 06/11/24 Срд 03:15:00 3317107 95
>>3316225
>1 696 вакансий «Go»
На некоторых сайтах у го багованный поиск из-за простого базворда. Да, в топе более релевантное но дальше идет мусор. В моей мухосране вообще выдает яндекс сервисы (видно где-то есть базворд го)
Помню как был рост на тиобе, когда появилась игра go.
Аноним 06/11/24 Срд 03:15:36 3317108 96
>>3316642
Да, бот сломался, триггер сработал на котлин вместо го.
Аноним 07/11/24 Чтв 04:06:18 3317782 97
17216367925000.jpg 144Кб, 640x430
640x430
Потихоньку вкатываюсь
Еще немного и будет открыта дорога в энтерпрайз

бабло в пути
Нужно только потерпеть...
Аноним 07/11/24 Чтв 06:56:03 3317813 98
>>3317782
Останется только где-то взять 5 лет работы. додик повелся на развод инфоцыган
Аноним 07/11/24 Чтв 16:45:54 3318296 99
>>3317813
Нарисует. У меня 6 лет в резюме было нарисовано.
Аноним 07/11/24 Чтв 17:37:46 3318336 100
>>3317782
>Потихоньку вкатываюсь
Вкат закрыт.
Аноним 07/11/24 Чтв 18:54:36 3318391 101
animatedf3zs1vy[...].gif 84Кб, 350x350
350x350
>>3317782
Конечно, шансы есть. Успехов!
Аноним 08/11/24 Птн 00:41:33 3318505 102
>>3316173
>Звездеж, жабист/шарпист со спрингом/asp.net за минуту разворачивает то, что на го еще даже не написано еще.
А потом жабист идет смотреть 3 часа конференцию в которой три долбоеба и крупных банков в синих рубашках с бейджиками обсуждают как нужно правильно написать конфиг для очередной ОРМ чтобы не было N+1 и чтобы вся БД не выгружалась в память.

> главная сложность в современной разработке это не синтаксис.
Это верно подмечено, жабисты и без синтаксиса нахуевертят сложностей
Аноним 08/11/24 Птн 00:53:49 3318510 103
>>3312611
Наверное в него статически компилится дохуя сишных либ. Это нетрудно проверить.
Аноним 08/11/24 Птн 06:51:15 3318551 104
>>3318505
>А потом жабист идет
Жабист идет нахер, а вот у шарпистов есть серия стандартов в ОРМ, а не зоопарк васянских либ, и понимаешь в чем фишка, ты либо можешь это использовать либо нет. Это выбор, а в го, извини, выбора нет. И все равно какой-то
мудень забудет сделать проверку err = rows.Err()
Аноним 08/11/24 Птн 07:08:55 3318556 105
>>3318510
Там в шарпах тоже статик бинарь.
В голанге шедулер корутин, в шарпах stackless стейт машина, он даже не знает про корутины.
Аноним 08/11/24 Птн 10:59:50 3318646 106
>>3314369
Мб уже объяснили, или сам отрыл, но мой совет такой: возьми и почитай исходный код стдлибы. Вот сядь и прочитай. Построй связи между компонентами, посмотри что и как вызывает и в какой последовательности. Мне в свое время понять стандартный http помогло именно это.
Аноним 08/11/24 Птн 11:03:46 3318652 107
>>3314369
В добавок к предыдущему докину, что без личного прощупывания хуй поймешь отличия всех Handle, Handler, HandleFunc, HandlerFunc и т.д. Ну и гуглить не забывай, тоже важный момент, инфы навалом
Аноним 08/11/24 Птн 11:16:27 3318677 108
>>3316174
> как и дженерики
Отдельный мем. Их где-нибудь по итогу использовали адекватно? Я вроде в стандартной либе где-то видел один раз и все.
Аноним 09/11/24 Суб 01:33:08 3319227 109
17310958002630.mp4 1315Кб, 640x360, 00:00:04
640x360
Аноним 09/11/24 Суб 10:48:47 3319306 110
>>3319227
Они оказывается еще до кассы в пятерочке такими злыми становятся
Аноним 11/11/24 Пнд 03:45:44 3320063 111
У кого какие пет-проекты? Го обсудим
Аноним 11/11/24 Пнд 17:46:42 3320588 112
>>3320063
Го можно терпеть в бигтехе за бабло, но делать пет проекты, мы че копрофилы?
Аноним 11/11/24 Пнд 17:53:45 3320594 113
>>3320063
Телеграм бота писал. Бот на ключевое слово, постил в чат картинку.
Аноним 11/11/24 Пнд 20:39:28 3320711 114
image.png 9Кб, 321x241
321x241
>>3320063
Вот это планирую
никогда проекты не делал. Ток задачи решал на кодварсе или литкоде
Аноним 11/11/24 Пнд 21:14:14 3320741 115
>>3320711
А где эти проекты можно найти?
В частности что у тебя на скрине
Аноним 11/11/24 Пнд 21:27:44 3320748 116
>>3320063
А что на гоу кроме круда и cli утилиты сделать можно?
Чет задизморалился на этой теме.
Что-то интересное превращается в обертку системных либ
Аноним 11/11/24 Пнд 22:10:05 3320771 117
Кто-нибудь использует какие-нибудь обертки над горутинами, чтобы без ебли быстро писать worker pool'ы и всякие там таск раннеры типа как errgroup?

Поймал себя на мысли, что не понимаю как из errgroup получать результаты функции. Если жаваскриптеры есть, то мне нужен аналог Promise.all и Promise.allsettled.

Думаю может начать писать какую-то обертку даже свою с каналами.
Аноним 11/11/24 Пнд 22:22:39 3320782 118
image.png 93Кб, 1010x742
1010x742
Аноним 12/11/24 Втр 07:51:12 3320872 119
>>3320748
Системные языки это языки с прямым менеджментом памяти.
Если бы не положили бы болт на арены, то с натягом можно было отнести к низкоуровневому (как спаны в си-шарпе) но никак не к системным. Вроде в го даже ансейва нет.

Языки с низкоуровневыми возможностями
C#, Свифт, Котлин.нейтив
Системные языки
C/C++, Rust, Zip (и прочая экзотика)
Аноним 12/11/24 Втр 10:47:22 3320922 120
>>3320872
>Вроде в го даже ансейва нет.
Есть конечно, и ручная аллокация/деаллокация там. И подключение библиотек на С с вызовом функций из них.
Аноним 12/11/24 Втр 12:24:25 3320986 121
>>3320872
https://github.com/0xcafed00d/joystick

Вот держи байтоебство. На го этим заниматься можно.
Можно даже на уровень IP спустится (ниже TCP и HTTP) и от туда ручками пакеты заворачивать.

Другое дело, что занимаются таким тут реже, и я чаще вижу c-биндинги, проброшенные в го, чем чистое го-байтоебство.
Аноним 12/11/24 Втр 13:44:03 3321085 122
>>3320986
Наверное байтоебство неправильный мем, с байтами ты буквально ебешься когда сырую utf-8 строку гоняешь или 8-бит буферы. Тут скорее ебство с сырыми указателями.
Аноним 12/11/24 Втр 13:48:45 3321089 123
>>3320922
>>3320986
Это же вроде отдельная тулзовина cgo а не чистый go?
Аноним 12/11/24 Втр 23:06:53 3321461 124
>>3321089
Ручное управление есть и просто в ансейфе. Дёргание функций из сишных либ либо да, через пакет CGo, либо с компилятором GNU, там вообще напрямую и гошные функции можно из си дёргать.
Аноним 13/11/24 Срд 00:05:18 3321475 125
>>3321089
В примере выше дергание чистых си-функций только в файле для osx (darwin). Линукс не использует си, если посмотришь исходники.
Аноним 13/11/24 Срд 19:36:24 3321921 126
Даа, ебать его [...].mp4 1304Кб, 1280x720, 00:00:09
1280x720
>>3308295 (OP)
Блять, у меня горит нахуй от того что не могу понять как устроен тип string.

Вот есть переменная типа string:
1. под капотом она имеет указатель на массив byte

2. в свою очередь byte это просто обертка над типом uint8

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

4. Чтобы это исправить ты должен преобразовывать полученный конкретный байт из строки в тип string().

Собственно вопрос.
НАХУЯ НУЖЕН ТИП rune?????!!!
Ну вот нахуяяяя!?!?!?!??!??!?
БЛЯТЬ как же меня корежит и трясет....



Аноним 13/11/24 Срд 19:52:17 3321925 127
>>3321921
>НАХУЯ НУЖЕН ТИП rune?????!!!
Чтобы преобразовывать строку в слайс рун и работать спокойно с символами, не ебя себе мозг.
Аноним 13/11/24 Срд 19:53:51 3321928 128
>>3321925
А нельзя, потому что одна графема может состоять из нескольких кодпоинтов, лемао.
Аноним 13/11/24 Срд 20:52:21 3321949 129
image.png 40Кб, 708x436
708x436
>>3321925
>>3321928
Так бля, я накинул такой пример, я правильно понимаю что, из-за того что в byte aka uint8 aka 1 байт помещается только цифры от 0-9, латиница A-z a-z и горстка ебаных символов, любая попытка использовать иное аля кириллица, иероглифы приводит к фейлу так как в ASCII/UTF-8 они просто не прописаны, и эту проблему решает rune aka uint32 aka 4 байта который по сути имплементирует UTF-32 благодаря которому можно работать с любыми символами мира.
Аноним 13/11/24 Срд 21:10:53 3321955 130
>>3321949
>можно работать с любыми символами мира.
Не совсем. Есть символы-модификаторы для д̷͊͛̌͜и̵̺̟̊а̵̝̫͍͙̊к̷̡̛̜͒̈͘͘р̵̛͍̬̍̈́и̷̺̚т̶̡͂̈̔и̵̥̉̽̂к̶̤̤͕̫̎̾͒̓ͅи̷̜̐̚, есть составные эмодзи (мужчина + черный + беременность). То есть на глаз определить, сколько байт в строке вообще не всегда возможно.
Аноним 13/11/24 Срд 21:16:16 3321959 131
>>3321949
В UTF-8 есть всё. Но это тип переменного размера, поэтому руна берёт максимальные 4 байта и всё.
Аноним 13/11/24 Срд 21:44:42 3321972 132
>>3321955
>>3321959
Нихуя не понял....
>Но это тип переменного размера
UTF-8 он может быть от 1 до 4 байт, хорошо

>Есть символы-модификаторы для д̷͊͛̌͜и̵̺̟̊а̵̝̫͍͙̊к̷̡̛̜͒̈͘͘р̵̛͍̬̍̈́и̷̺̚т̶̡͂̈̔и̵̥̉̽̂к̶̤̤͕̫̎̾͒̓ͅи̷̜̐̚, есть составные эмодзи (мужчина + черный + беременность).
Есть такие символы для которых нужно несколько рун?
Аноним 13/11/24 Срд 21:48:46 3321975 133
>>3321972
>Есть такие символы для которых нужно несколько рун?
Да. Поэтому на практике UTF-32 просто ни для чего не нужен.
Аноним 14/11/24 Чтв 17:12:54 3322408 134
>>3321972
>Есть такие символы для которых нужно несколько рун?
Знаменитый флаг Уэльса 🏴
Аноним 14/11/24 Чтв 17:14:57 3322412 135
>>3321928
>А нельзя, потому что одна графема может состоять из нескольких кодпоинтов, лемао
В ASCII такой хуйни не было!
Аноним 14/11/24 Чтв 18:18:16 3322484 136
На го нет вакансий в валлед ворлде. Без шуток. В странах первого мира (нидерланды, uk, швейцария, австрия) не используется нигде голанк. В США тоже не так много вакансий на го. С чем это связано? Почему го взлетел именно в РФ и нигде более?
Аноним 14/11/24 Чтв 19:20:13 3322541 137
>>3322484
Потому что в РФ живой рынок, много проектов с нуля пишется, а го это отличный язык как новый выбор. В странах загнивающего мира поддерживают тухлое легаси. Посмотри сколько там вакансий на ебучем Коболе и охуей.
Аноним 14/11/24 Чтв 20:28:18 3322563 138
>>3322484
>Почему го взлетел
А хулиб ему не взлететь? Хороший язык же
Аноним 14/11/24 Чтв 21:01:25 3322571 139
>>3322484
>С чем это связано? Почему го взлетел именно в РФ и нигде более?
из за использовании в госухе
Аноним 14/11/24 Чтв 21:23:01 3322577 140
>>3322484
Уровень сеньоров и тимлидов ниже.
Ну, то есть, реально есть "молодые и успешные" тимлиды считающие, что го это "улучшенный си".
Аноним 14/11/24 Чтв 22:17:07 3322622 141
>>3322484
Потому что го лучше всего подходит, чтобы писать разные парсеры/брутфорсы/чекеры/регеры/бомберы/подобный около-хак софт и бекенд к телеграм ботам, а у нас это все любят как нигде.
Аноним 15/11/24 Птн 00:10:03 3322660 142
>>3322622
>парсеры

Что-то хоть не хуже питухонского Beatiful Soup есть на Го для парса хтмла и поиску по css селекторам в нём?
Аноним 15/11/24 Птн 00:49:29 3322675 143
>>3322660
https://github.com/PuerkitoBio/goquery есть вполне неплохой аналог.

Другое дело что если тебе нужен фреймворк уровня скрейпи, то конечно лучше петухон. Хотя на го и был какой-то более тухлый аналог.

В остальном да, скрепер на петухоне напишется раза в 1.5-2 быстрее чем на го, там попроще и библиотеки приятнее.
Аноним 15/11/24 Птн 17:55:29 3323192 144
>>3322660
>>3322675
Какие вообще причины писать скрепер не на питухоне? Даже если ты отбитый фанат говна.
Аноним 15/11/24 Птн 21:38:13 3323311 145
animatedf3zs1vy[...].gif 84Кб, 350x350
350x350
>>3322484
А как ты так узнал? Кажется, в "валлед вордле" вообще нет единой вменяемой доски объявлений для вакансий.
Аноним 16/11/24 Суб 00:15:31 3323354 146
>>3323192
Все пишется приятнее на петухоне. Мне интересно, только у нас ставят выше комфорт разработки с желанием сэкономит кабану на железке? Или заграницей так же?
Аноним 16/11/24 Суб 03:50:41 3323392 147
Кто-нибудь с других языков в Го перекатывался? Посоветуйте книги для перекатывающихся.
Читать 500 страниц про "переменная это коробочка, куда мы кладем данные" как-то не хочется.
Аноним 16/11/24 Суб 13:04:48 3323569 148
>>3323392
В чем смысл? Язык за выходные учится
Аноним 16/11/24 Суб 13:13:52 3323575 149
>>3323392
>Кто-нибудь с других языков в Го перекатывался?
Главный вопрос - зачем это добровольно делать?
Аноним 16/11/24 Суб 13:15:30 3323576 150
>>3323575
В среднем на российском рынке на Го больше зп и пишутся новые проекты. На джаве и питухоне ситуация хуже - много чего находится в состоянии вечной поддержки легаси и зепки ниже.
Аноним 16/11/24 Суб 20:53:40 3323845 151
>>3323392
Документация на оф сайте, плюс чатгпт для тупых вопросов. В го самое сложное это горутины и ее паттерны. Если катишься с js, то придется ещё про синхронизацию изучать, всякие мьютексы и семафоры.
Аноним 16/11/24 Суб 20:58:51 3323848 152
>>3323192
Причина та же как и везде с го. Используя го можно затыкать боттлнеки чуть более производительным софтом. Одно дело написать за вечер скрепер Амазона и забыть, собрав данные на сегодня.

Другое дело писать сложную систему с кучей скреперов разных сайтов, масштабировать в кубернетисах, экономить деньги кабану и прочее. В какой то момент 100 мб в ОЗУ на питон может стать затратнее чем 10 мб на говне.

Но я согласен что это не всем надо.
Аноним 17/11/24 Вск 02:59:58 3323985 153
>>3323576
ЗП больше потому что нужны сеньки, которые разгребут бойлерплейт предыдущих модных и молодежных
Аноним 17/11/24 Вск 09:20:23 3324035 154
Аноним 17/11/24 Вск 10:28:27 3324060 155
>>3324035
Яработал. Гоферы через бойлерплейт и самописульки умудрились сделать легаси код еще хуже чем на жабе, казалось бы куда хуже.
Аноним 20/11/24 Срд 23:28:36 3326413 156
animatedf3zs1vy[...].gif 84Кб, 350x350
350x350
Аноним 21/11/24 Чтв 00:35:35 3326432 157
lang-demand.PNG 66Кб, 864x915
864x915
Аноним 21/11/24 Чтв 17:34:53 3326861 158
>>3326413
>Просто не повезло
вкатится в го.
Аноним 25/11/24 Пнд 23:28:19 3329361 159
o7n2H7v5qpw.jpg 122Кб, 1774x1265
1774x1265
Помогите тупому понять указатели в го, когда нахуй писать эти * и &, а когда нет?

js/ts/php/python-макака, 8 лет опыта
Аноним 26/11/24 Втр 00:43:16 3329387 160
>>3329361
В смысле что эти символы значат или юзкейсы?
Аноним 26/11/24 Втр 01:07:14 3329395 161
>>3329387
Юзкейсы. Почему-то неочевидно, когда использовать указатель при передаче аргумента в функцию, а когда не использовать. Когда обявлять переменную как ссылку, а когда нет.
Аноним 26/11/24 Втр 10:47:37 3329532 162
>>3329395
Ну я даже хз, как это может быть неочевидно. В одном случае ты передаёшь сам объект, состояние которого функция может как-то поменять. В другом ты передаёшь функции копию, и похуй, что она там с ней делает, у неё свой такой же, а твой у тебя остался.
Аноним 26/11/24 Втр 10:48:20 3329533 163
>>3329395
Запомни главное. Когда ты передаешь значение в аргумент функции - у тебя это значение копируется. Не важно: строка или структура.
Это обычное поведение, как в си. Если ты хочешь чтобы функция мутировала твой аргумент - надо передавать ссылку на переменную (&). А чтобы указать функции что она принимает ссылку используется (*).

Почитай про указатели в си, тут тоже самое, но без арифметики.
Аноним 26/11/24 Втр 14:59:01 3329742 164
animatedf3zs1vy[...].gif 84Кб, 350x350
350x350
>>3329361
https://go.dev/play/p/rekATAlU1Ow
Допустим у тебя есть переменная типа "структура с некими полями". Ты хочешь отправить эту переменную в функцию так, чтобы функция изменила значения её полей. Соответственно, если функция принимает переменную не по указателю, то в туда скопируется значение самой переменной - в данном случае структура, т.е. по сути, просто создастся новая такая же структура. Когда выполнение функции закончится, ты обнаружишь, что поля переменной, которую ты передавал в качестве аргумента в функцию, остались прежними. А тебе нужно, чтобы функция меняла значения полей исходной переменной, поэтому тебе придётся отправить её по указателю - всё просто.

Ну и плюс, есть более сложные кейсы с использованием указателей. К примеру, рекурсивные структуры данных - типа списков, деревьев и всякого такого.
Аноним 26/11/24 Втр 19:58:25 3329979 165
>>3312011
> - Работа с ошибками. По факту предлагается на выбор два сорта говна, которые можно еще и смешивать между собой - sentinel values и создание кучи абсолютно одинаковых структур под разные типы ошибок. Первый подход еще можно использовать без рвотных позывов благодаря errors.Is(), но при необходимости в таком случае достать дополнительный контекст ошибки начинается трахомудия. Второй подход более гибкий, если это слово сюда вообще применимо, но проверка типа ошибки через errors.As() это ебаный кал собаки, раздувающий сервисы/хэндлеры до космических размеров на ровном месте.
Ошибки не предназначены для того, чтобы их анализировать. error нужно пробросить и в итоге выплюнуть в лог. Это как исключение, только программа не вылетает.
Если тебе нужно обрабатывать ситуации, то возвращай статус коды.

>В традиционных ООП языках
Го не ООП язык.
Аноним 26/11/24 Втр 20:11:14 3329991 166
>>3329979
>Ошибки не предназначены для того, чтобы их анализировать.
И как мне понять что вернуть юзеру, 40Х или 50Х? На самом нижнем уровне в каком нибудь парсере решать, что это за тип ошибки и возвращать 401?
Аноним 26/11/24 Втр 20:44:16 3330010 167
>>3329532
>>3329533
>>3329742
Спасибо.
>https://go.dev/play/p/rekATAlU1Ow
Отлично помог этот пример, и каким же простым он оказался, теперь я чувствую себя ещё более тупым, чем я думал. Завидую людям, которых обучали сразу с низкоуровневых языков программирования. Потому что мне теперь ещё предстоит увлекательное погружение в горутины, каналы и вот это всё.
Аноним 26/11/24 Втр 22:48:00 3330088 168
animatedf3zs1vy[...].gif 84Кб, 350x350
350x350
>>3330010
Не парься, в любом случае твой опыт вряд ли усугубит понимание. Меня хоть и обучали в универе на низкоуровневых ЯП, но до этого я самообучался вообще хрен знает с чего - со всяких ActionScript'ов в частности.
Аноним 27/11/24 Срд 16:53:13 3330629 169
когда уже сдохнет зумерское хуйло golang...
Аноним 27/11/24 Срд 22:53:12 3330814 170
>>3330629
Как только пердиксы изобретут что-то поновее и где зп будут ещё повыше.
Аноним 28/11/24 Чтв 11:05:17 3330975 171
Как запустить свой go код на роутере например keenetic?
Вроде как есть mipsel архитектура, но м.б. существует гайд, как его туда закинуть?
Аноним 28/11/24 Чтв 11:07:33 3330979 172
>>3330010
Горутины и каналы - это примитивы довольно высокого уровня.
Остальное можно изучить, когда почувствуешь, что тебе это понадобилось.
Аноним 28/11/24 Чтв 11:14:06 3330989 173
>>3322622
Как на нём можно писать такое, если даже хеллоуворлд на 2 Мбайта?
Аноним 28/11/24 Чтв 12:20:47 3331047 174
>>3330989
Это много? Да хоть на 100, какая разница?
Аноним 28/11/24 Чтв 12:57:45 3331065 175
>>3330989
Смотря с чем сравнивать. Из своей практики скажу. Есть у меня пара серверов на пайтоне и ноде. Оба занимают в ОЗУ около 100-150 мб при очень небольшой нагрузке.
Схожий сервер на го в памяти занимал 10-20 мбайт, в 10 раз меньше.
То что бинарник весит 10-20 мбайт не так страшно, потому что RAM намного дороже чем HDD/SSD. При этом писать на го не то чтобы прям сильно сложнее, чем на упомянутых языках. В отличии от раста, зига или, не дай боже, чистого си.
Аноним 28/11/24 Чтв 13:01:44 3331067 176
>>3330989
Снова этот еблан, считающий размер хеллоуворда за основную характеристику любого ЯП
Аноним 28/11/24 Чтв 15:18:24 3331163 177
какие шансы найти работу джуном?
Аноним 28/11/24 Чтв 16:30:31 3331212 178
Аноним 28/11/24 Чтв 16:41:18 3331219 179
Первичная проблема го состоит в том, что в бинарнике содержится весь рантайм го. Это как если бы каждый jar-файл содержал весь jdk. Ни каких способов выгрузить рантайм в виде dll или so файлов нет.
Аноним 28/11/24 Чтв 16:42:45 3331220 180
>>3331219
Почему это проблема?
Аноним 28/11/24 Чтв 16:45:49 3331226 181
>>3331220
Динамические библиотеки загружаются ОС один раз и разделяются между разными процессами так, как будто этот код часть самого процесса. Таким образом система экономит как оперативную память, так и место на диске.
Аноним 28/11/24 Чтв 16:52:31 3331231 182
>>3331047
>>3331065
Часто можно встретить утверждение, что го якобы отлично подходит для написания консольных утилит. Однако, консольные утилиты должны занимать минимум места на диске, потому что их много (посмотрите в любой unix-системе папку /bin) и каждая такая утилита решает свою маленькую задачу. Если переписать утилиты на го, то размер ОС распухнет в 1000 раз и тогда даже террабайтных дисков не хватит. Но современным программистам плевать на ресурсы, они готовы писать на любимом языке, раздувая код в тысячи раз.
Порой просто удивительно, что в 80-90-х многие программы шустро работали на слабом железе, а сейчас им подавай пк с последним процессоров, огромным диском (да и ещё и SSD!) и десятками гигабайт памяти.
Аноним 28/11/24 Чтв 17:01:08 3331244 183
>>3331231
>Но современным программистам плевать на ресурсы, они готовы писать на любимом языке, раздувая код в тысячи раз.
Да, всё так, всем похуй на ресурсы. У меня на VPS за 5 баксов 50 гигов диска, как-нибудь переживу тяжесть гошных бинарников.
>Порой просто удивительно, что в 80-90-х многие программы шустро работали на слабом железе, а сейчас им подавай пк с последним процессоров, огромным диском (да и ещё и SSD!) и десятками гигабайт памяти.
Гошные программы вполне шустро работают, они эффективны в плане потребления ресурсов CPU, так что здесь ты привираешь.
Аноним 28/11/24 Чтв 18:53:46 3331354 184
В этой параше, даже нельзя определить поле структуры и метод с одним и тем же именем.
Аноним 28/11/24 Чтв 22:53:25 3331484 185
>>3331354
Всяко лучше, чем ставить (((скобочки))) в плюсах, чтобы компилятор понял, что ты не функцию объявляешь.
Аноним 28/11/24 Чтв 22:58:58 3331489 186
>>3331231
Успокойся, ребёнок. Каждому языку − своя задача. Да, окружение на го для ОС будет весить и жрать пиздец. Зато вся тысяча нужных утилит будет написана раньше, чем ты выловишь сегфолты в своём грепе. И бизнесу часто нужно первое. Ему похуй на стоимость железа, ему нужно чтобы в прод выкатилось позавчера.
Но тебя никто не заставляет работать на кабанов, стань системщиком и еби байты себе в удовольствие.
Аноним 29/11/24 Птн 13:52:24 3331860 187
>>3331484
Так ты и так должен ставить скобочки при вызове метода. В чем проблема понять что foo.bar это ображение к полю, а foo.bar() это вызов метода? При этом локальную переменную с именем метода объявить можно, никаких проблем это не вызывает.
Аноним 29/11/24 Птн 14:32:34 3331892 188
image.png 70Кб, 559x609
559x609
>>3331860
Потому что ты можешь функцию передавать ссылок как коллбек. Ты точно программист?
Аноним 29/11/24 Птн 16:59:49 3331984 189
photo2024-11-29[...].jpg 29Кб, 1100x154
1100x154
>>3331860
>Так ты и так должен ставить скобочки при вызове метода. В чем проблема понять что foo.bar это ображение к полю, а foo.bar() это вызов метода?
Пожалуй, ни в чём. А как насчёт примера посложнее, юный плюсовик? Создадим контейнер со своим компаратором. Ой, или мы функцию объявляем. Или нет? Помогите Даше компилятору разобраться в простом и удивительном синтаксисе, поставьте двойные скобочки.
Аноним 29/11/24 Птн 17:13:00 3331990 190
>>3331231
>> Порой просто удивительно, что в 80-90-х многие программы шустро работали на слабом железе, а сейчас им подавай пк с последним процессоров, огромным диском (да и ещё и SSD!) и десятками гигабайт памяти.
Слабее железо -> больше требований к оптимизации -> работа сложнее -> меньше специалистов
Представь современный мир, если бы только чистые Си и остались
Аноним 29/11/24 Птн 17:16:38 3331995 191
Столкнулся с задачей необычной. Нужно в хендлере сформировать жсон, а в мидлваре обернуть этот жсон в другой жсон. Это вообще возможно сделать без оверпердолинга? Насколько помню из responseWriter'a прочитать нельзя, т.е. достать, десериализовать и заново сериализовать не выйдет.
Аноним 29/11/24 Птн 21:29:55 3332147 192
Гоферы, а как у вас миграции генерируются?
Аноним 29/11/24 Птн 23:45:02 3332235 193
>>3331995
Но можно подменить responseWriter на свой кастомный, на то он и интерфейс же. В мидлваре подменить респонсрайтер на фейкреспонсрайтер, который сохранит тело в буфер, обернёт ещё раз, и вызовет уже оригинал?
Аноним 30/11/24 Суб 13:48:29 3332371 194
>>3331892
>Потому что ты можешь функцию передавать ссылок как коллбек.
Ок, это аргумент.

>>3331984
Шизоид, прими таблетки. Причём тут Си?
Аноним 30/11/24 Суб 13:59:47 3332376 195
>>3332371
>Причём тут Си?
Действительно причём тут няшная, когда на пике плюсоговно?
Аноним 01/12/24 Вск 00:13:51 3332612 196
>>3332371
>Причём тут Си?
Да ни при чём. Но очень показательно, что плюсовик даже не узнаёт свою же парашу. Не зря вас к ядру линукса не подпускают.
Аноним 01/12/24 Вск 05:51:15 3332669 197
Добрый день. Пилю свой пет-проект с psql, блекджеком и докером. При изменении значения в бд, въебывается изначальный порядок значений.
Было например "1,2,3,4", а стало "4,1,3,2". При этом функционально все работает нормально.
Это нужно как-то фиксить или так и должно происходить?
Аноним 01/12/24 Вск 06:56:43 3332671 198
Аноним 01/12/24 Вск 15:45:35 3332886 199
>>3332669
>Было например "1,2,3,4", а стало "4,1,3,2"
Как это?
Аноним 01/12/24 Вск 19:09:25 3333047 200
>>3332886
Базе похуй в каком порядке выдавать результаты, если ты не указываешь сортировку.
Забавно видеть такой вопрос в го треде.
Аноним 01/12/24 Вск 20:43:10 3333077 201
пиздец
Аноним 01/12/24 Вск 22:39:47 3333107 202
семирипл приди...
Аноним 01/12/24 Вск 22:46:34 3333112 203
Аноним 02/12/24 Пнд 01:39:37 3333153 204
Аноним 02/12/24 Пнд 17:15:34 3333524 205
Аноним 07/12/24 Суб 11:38:42 3336630 206
Мертвый тред
Аноним 07/12/24 Суб 17:22:55 3336896 207
Хочу реализовать монаду Maybe и возникла проблема с ебучими дженериками. Метод у типа не может иметь параметров типа и из-за этого не могу реализовать метод map как метод типа, только как отдельный метод.
Есть какие нибудь идеи как это обойти?
Аноним 07/12/24 Суб 18:54:40 3336936 208
>>3336896
> Есть какие нибудь идеи как это обойти?
Есть. Сменить язык. На Go невозможно реализовать эту монаду, как и большинство примитивов фп, особенно без использования interface{} и тайп асертов.
Дженерики в го это по сути кастрированный концепт, который скорее всего добавили по просьбам трудящихся (пока их не было постоянно стоял визг о том, как они нужны). Редко вижу проекты, где они неиронично используются, мягко говоря. А без нормальных дженериков, какие уж тебе тут монады.
Аноним 08/12/24 Вск 20:12:01 3337457 209
Какую библиотеку в проде юзают чтобы представить на го вариант std::optional плюсового? Просто нужна структура со значением, булем и методами типовыми?
Может это есть в каком-то пакете общих примитивов, который все используют в проде?
Аноним 09/12/24 Пнд 00:51:39 3337550 210
>>3337457
> Может это есть в каком-то пакете общих примитивов, который все используют в проде?
Нет.
Аноним 09/12/24 Пнд 12:04:34 3337783 211
Ебать, а гошка то в России больше востребована чем я думал, мне казалось ей чисто озон играется, а оказывается есть вакухи от мтс, тинка, вб, 2гис, вк... бля, ламода
Аноним 09/12/24 Пнд 16:29:54 3338029 212
Гошники, как вы с этим живёте?

2 ИДЕНТИЧНЫХ варианта создания переменных (var, :=), различные махинации с данными - ОТДЕЛЬНЫЕ ПАКЕТЫ (strconv. прочие), функции расширения через магический синтаксис, интерфейсы...

Да что у вас не так с языком? У вас его читать почти нереально, программировать что-то еще больнее. Выглядит как-будто больной человек пытался сделать ЯП под шишками.

Горутины вообще жесть, реально какой-то шизофреник писал код под мефедроном, закусывая трусами школьниц.
Аноним 09/12/24 Пнд 16:51:31 3338051 213
Стикер 0Кб, 512x512
512x512
>>3338029
>Горутины вообще жесть, реально какой-то шизофреник писал код под мефедроном, закусывая трусами школьниц.
То ли дело асинк/авейт эталон элегантности!
Аноним 09/12/24 Пнд 17:18:42 3338070 214
>>3338051
suspend, collectAsState, launch, await, flow.
Люблю котлин за этот элегантный способ работы с корутинами.
Аноним 09/12/24 Пнд 21:44:08 3338243 215
>>3338029
>>Гошники, как вы с этим живёте?
Судя по тому что на нем пишутся отнюдь не рофлопроекты для попила бабла и в компаниях сильно выше уровнем чем "ОАО РОГА И КОПЫТА"...
Более чем отлично живем
Аноним 09/12/24 Пнд 23:59:20 3338337 216
>>3337783
Авито ещё забыл, там сотни гоферов и платят збс. Самокаты всякие, Островки. Го реально выстрелил на российском рынке, работы дохуя.
Аноним 10/12/24 Втр 00:16:58 3338350 217
>>3338070
>suspend, collectAsState, launch, await, flow.
>Люблю котлин за этот элегантный способ работы с корутинами.
Чел! У тебя личерали весь рот в говне! Все эти launch это реально ебанная магия с неочевидными последствиями. Кто на каком пуле запускается, все эти неявные контексты и скоупы, это просто говно ебанное.

А Горутина это тупо еще один поток, в горутину и обратно все передается явно ручками. С горутинами конкурировать только вируальные треды могут, но точно не калорутины.
Аноним 10/12/24 Втр 20:38:40 3338996 218
Сап, гопота. Через две недели вкатываюсь в онлайн школу на направление Go. Я 2 месяца мялся, очень мало изучал язык(пару часов в неделю). В итоге написал тестовое задание и поступил. Сейчас же имею проблемы с синтаксисом. Вечно вылетает из головы что-то, особенно все что, что использует точки в названии. Не знаю почему но такой синтаксис меня даже пугает, хотя это вроде как везде. В общем что можете посоветовать чтобы импрувиться? Для себя понял что наверное нужно больше практики, однако не знаю что лучше:делать учебные легкие задачки(скучно и не прибавляет мотивации), либо же запилить какой-никакой проект, что может быть трудно для меня. В общем, я в тупике.
Аноним 11/12/24 Срд 00:57:06 3339089 219
>>3338029
В го самая легкая и самая удобная и самая гибкая модель concurrency кода. Любой кто с этим спорит - долбоеб.
Аноним 11/12/24 Срд 06:26:17 3339122 220
>>3338029
Язык - ебаное говнище, кто ж спорит
А что делать? Зепку 350к на пыхе хуй выбьешь
Аноним 11/12/24 Срд 06:27:56 3339123 221
>>3337783
Охуеть, на языке, созданном для хайлоада и микросервисов, пишут хайлоад и микросервисы!
Аноним 11/12/24 Срд 11:23:44 3339250 222
>>3339123
Язык представляли как system programming language, про это даже на сайте было написано. Но когда стало понятно что бинари по 10 мегабайт с gc не очень подходят для системного программирования - стыдливо убрали 😌
Аноним 11/12/24 Срд 23:14:29 3339689 223
>>3339250
>system programming language
И тем не менее такие платформы как кубер и докер на нём написали. Я вот эмбед на нём пишу, на Orange Pi зерошках приложухи летают.
Аноним 12/12/24 Чтв 00:40:00 3339724 224
image.png 361Кб, 1246x944
1246x944
Аноним 13/12/24 Птн 00:08:11 3340296 225
Правда, что в вашу хуйню можно вкатиться только если ты зумер?
Аноним 13/12/24 Птн 01:24:33 3340309 226
>>3339089
> В го самая легкая и самая удобная
+
>и самая гибкая
А вот с этим поспорю.
Сможешь принудительно завершить выполнение горутины, узнать, крутится ли она еще и т.д?
Нет.
Гибкой такую модель определенно не назовешь.
Но удобство тут действительно есть, и легкость. Можно реально спавнить их и ничего не виснет, не вылетает. Но если бы у горутины был какой-то ID, по которому можно было бы выполнять с ней базовые операции, было бы более интересно, но тогда появилась бы возможность наделать трудно отлавливаемых ошибок, которая присутствует в других языках с фьючерами, асинк-эвейтами и этим вот всем.
В общем горутины - киллер-фича языка однозначно.
Аноним 13/12/24 Птн 01:31:44 3340313 227
>>3340309
>принудительно завершить выполнение горутины
Никто из современных, безопасных языков такое не позволяет делать. Тупо потому что проблем будет больше, чем профита.
Аноним 13/12/24 Птн 01:41:30 3340315 228
>>3340309
>Сможешь принудительно завершить выполнение горутины, узнать, крутится ли она еще и т.д?
>Нет.
Да, только придётся написать свой менеджер горутин строк аж на 100-200. Раздать горутинам айдишники и сделать мапу, куда по ключу из этих айдишников положить структурки с инфой о состоянии, контекст с отменой, можно коллбэков насыпать и управлять потрохами горутины − да что угодно тащемта можно.
Аноним 13/12/24 Птн 09:54:58 3340398 229
>>3337783
Да что-то нихуя он не востребованный уже. Все как писали на Java и плюсах, так и пишут
Аноним 13/12/24 Птн 14:23:10 3340576 230
>>3340315
> Да, только придётся написать свой менеджер горутин строк аж на 100-200. Раздать горутинам айдишники и сделать мапу, куда по ключу из этих айдишников положить структурки с инфой о состоянии, контекст с отменой, можно коллбэков насыпать и управлять потрохами горутины − да что угодно тащемта можно.
Только на практике твой менеджер соснет, когда некоторые горутины просто зависнут, потому что механизм прерывания должен быть встроен в саму горутину. Я с таким сталкивался. Когда горутина вызывает кучу кода из сторонних библиотек, активно работает с каким-то более менее сложным протоколом, хотя бы SSH. Сколько бы контекстов и таймаутов ты ни насыпал, всегда будет шанс зависания, причину которого сложно/невозможно отловить и устранить, и твой код будет иногда локаться на ожидании ответа от горутин, которые подвисли.
Аноним 13/12/24 Птн 15:47:07 3340621 231
Ну что ж, у меня вторая попытка начать свой первый проект на го
Аноним 13/12/24 Птн 16:08:13 3340639 232
Аноним 13/12/24 Птн 16:10:56 3340646 233
Аноним 13/12/24 Птн 16:29:42 3340654 234
>>3340639
Хочу сделать загрузчик файлов, так, чтоб он чекал ссылки на уникальность, занимался препроцессингом, т.е. чтоб парсил страницы если нужно и т.д.

В общем тут над архитектурой надо думать, но я пока всё в одном сервисе запилю, кроме воркера непосредственно загрузчика, его вообще можно на аутсорс отдавать, например yt-dlp, а то что я буду делать это интерфейс, т.е. веб-приложение на gin, ну и хранение ссылок.
Аноним 13/12/24 Птн 20:11:10 3340792 235
image.png 45Кб, 814x216
814x216
кек оп инвалид
Аноним 13/12/24 Птн 21:42:13 3340823 236
Двачую, на гошке написаны
Докер
Кубер
Прометеус
Хелм
Терраформ
Минио
Vault
Etcd
Traefik
Rancher
И даже GitLab Runner
Аноним 13/12/24 Птн 21:52:14 3340830 237
>>3340823
что это такое и зачем оно нужно
всю жизнь юзаю
нотепад два креста
пхп 5 недавно перешел на 7
денвер
вин рар
хдебиг
хмлхттпреквест
бэм
пхп му админ
мускуле 5.6
фар манагер
Аноним 13/12/24 Птн 21:57:45 3340832 238
>>3340830
Весь оркестр, что теперь требуется от бекендо-господина написан на ГОвне...
Аноним 13/12/24 Птн 21:58:24 3340833 239
Аноним 13/12/24 Птн 22:55:36 3340852 240
>>3340576
>Только на практике твой менеджер соснет, когда некоторые горутины просто зависнут, потому что механизм прерывания должен быть встроен в саму горутину. Я с таким сталкивался. Когда горутина вызывает кучу кода из сторонних библиотек, активно работает с каким-то более менее сложным протоколом, хотя бы SSH. Сколько бы контекстов и таймаутов ты ни насыпал, всегда будет шанс зависания, причину которого сложно/невозможно отловить и устранить, и твой код будет иногда локаться на ожидании ответа от горутин, которые подвисли.
Понял. Ну да, в теории такой шанс есть всегда. Но я не сталкивался, максимум контекст с дедлайном ставил и пукал 500, если долго крутит.
Аноним 14/12/24 Суб 18:04:20 3341251 241
написал свое няшное айпи на гошечке
отдает по запросам джсоны
но встал хуй вопрос а что взять для фронта?
пробовал htmx но тогда придется переделывать все айпи ручки чтобы отдавали html и вообще связываться с шаблонами буееее
реакт учить не хочу и не буду
что брать то?
Аноним 14/12/24 Суб 18:20:46 3341264 242
Аноним 14/12/24 Суб 21:24:32 3341382 243
>>3341251
Напиши фронт на ncurses через CGo.
Аноним 14/12/24 Суб 23:43:08 3341427 244
>>3341251
Иди учи ангуляр. Во фронтенд без технологий фронтенда даже не думай лезть, бесполезное занятие.
Аноним 15/12/24 Вск 01:51:21 3341443 245
>>3341251
Мне Vue3 зашёл до этого ни на каких фреймворках не писал, только с шаблонами.
Я юзал Vuetify, но судя по всему это кал и есть более крутые фреймворки, например PrimeVue (но это не точно).
Пишется легко, если не нужна какая-то крутая логика, но для этого можно к гопоте обращаться за советами
Аноним 21/12/24 Суб 15:57:21 3346575 246
>>3341251
htmx это топ если не маляр - не нужно засирать свою репу всяким фронто говном, просто отдаешь файлики и кайфуешь. Если нужна красивость, то tailwind, который можно без ебучих js зависимостей просто выкачать и так же отдать или через cdn дать юзеру.
Аноним 21/12/24 Суб 20:27:03 3346813 247
>>3339089
>В го самая самая гибкая модель concurrency кода
Elixir
Аноним 21/12/24 Суб 22:08:01 3346873 248
>>3341251
Современный JS вполне себе может дергать апишки, да и манипуляции с DOM там ну +- на уровне JQuery. Почему бы не писать на нем?
Аноним 22/12/24 Вск 20:00:59 3347428 249
00000.jpg 22Кб, 597x519
597x519
Бляяяя! Ёбаный рот!
Я сделал библиотеку, которую юзаю в нескольких своих проектах и зачем-то решил закинуть ее на гитхаб, чтобы не копировать файлики, а делать go get, import, все "по красоте".
Суть в том, что я не могу заставить го подтягивать новую версию своей охуенно нужной либы. Закоммитил в master, изменения есть. Пробовал go clean-modcache, затем go get -u github.com/путь/к_библиотеке - бесполезно. Я уже один раз с этим столкнулся, но как-то хуй пойми как через очко победил это, но не могу вспомнить как, просто блять как ебанутый нажимал везде и вставлял команды.
ПАМАХИТИ
Аноним 22/12/24 Вск 20:03:55 3347430 250
В целом система модулей максимально уёбищная, хотя на первый взгляд и простая. Помню еще с год назад нужно было форкнуть библиотеку другого человека, клонировал ее, внес правки, запушил, но на свою библиотеку не давало сослаться из-за конфликта имен или чего-то еще, тоже долго ебался, ставил какие-то реплейсы в go.mod и в итоге тоже с 20 раза получилось. Абсолютно неуправляемое, не интуитивное говно, просто тянет то что скачало в самый первый раз.
Аноним 22/12/24 Вск 20:08:08 3347433 251
Есть, разобрался!
1. Удалил go.sum #не уверен, что необходимо
2. Удалил ссылку на свою либу из go.mod
3. $ go clean -modcache #без этого один хуй тянет старую версию
4. $ go get -u github.com/user/lib
5. $ go mod tidy

Вопрос, а менее идиотски это можно было реализовать?
Аноним 22/12/24 Вск 22:37:45 3347560 252
>>3347433
Почитать документацию.
Что-то мне подсказывает, что год мод качает последний тэг, он у тебя уже есть, поэтому перекачки не происходит. Правильное решение - выпустить тэг. Рабочее - апдейтнуть по хэшу коммита (@hash после названия либы).
Аноним 23/12/24 Пнд 01:20:37 3347636 253
>>3347560
Потому что должна быть опция скачать самую новую версию (последний коммит), а не хардкодить трехэтажные, человеконечитаемые версии в go.mod.
Тегов у меня нет.
Аноним 23/12/24 Пнд 09:14:05 3347718 254
>>3347636
Ты совсем читать не умеешь? Опция есть, go get githib.com/zalupa/hui@last-hash, все, качается (мб форма слегка отличается, но идея такая).
Версия это тэг, коммиты сами по себе на версию не тянут.
Сначала научись читать на русском, потом на английском, только потом воняй на го мод блеать.
Аноним 23/12/24 Пнд 17:43:28 3348273 255
подскажите, можно ли на go писать монолитные сервисы?
Аноним 23/12/24 Пнд 18:00:02 3348295 256
>>3348273
Мне кажется возможность писать микросервисную/монолитную архитектуру не определяется языком, а так да
Аноним 23/12/24 Пнд 18:25:03 3348327 257
>>3348295
Ну, как будто бы у каждого языка есть "своя парадигма", куда может вкладываться как парадигмы в общем понимании, так и стили программирования.
Например С и плюсы были созданы для монолитов, Джава, Сишарп - для ООП, а вот го это язык для микросервисов. И у меня такое чувство что если начать писать на нём монолит то как будто бы это неправильно
Аноним 23/12/24 Пнд 20:52:57 3348432 258
Screenshot 2024[...].png 83Кб, 2218x528
2218x528
Анон объясни это.
При чем тут package rand если он даже не юзается в примере. Ничего себе крученые подачи с ходу
Аноним 23/12/24 Пнд 20:56:01 3348436 259
Screenshot 2024[...].png 82Кб, 2020x490
2020x490
>>3348432
Last element это красное или фиолетовое
Аноним 23/12/24 Пнд 21:57:18 3348477 260
>>3348432
Аргументы функции Println изучи. Там твой ранд используется.
Аноним 23/12/24 Пнд 22:19:52 3348493 261
animatedf3zs1vy[...].gif 84Кб, 350x350
350x350
Аноним 24/12/24 Втр 15:46:54 3349055 262
>>3308295 (OP)
Есть видос или годное объяснение что такоемикросервис
Аноним 24/12/24 Втр 20:09:15 3349280 263
>>3349055
Сервис с маленькой зоной ответственности
Хуй его знает, как можно такие вопросы задавать
Аноним 24/12/24 Втр 23:55:21 3349404 264
>>3349055
Смотри, ты можешь писать и какать независимо друг от друга. Сначала пописал, потом покакал. Покакал, но не пописал. У тебя может быть запор, но при этом писать ты можешь и тп. В точности также работают микросервисы
Аноним 25/12/24 Срд 14:52:26 3349704 265
>>3349055

Почему то вообще не слышал отдельного слова для таких сервисов в отрыве от го.
Почему го хорош для них, и что было стандартом для них до го?
Аноним 25/12/24 Срд 19:41:02 3349923 266
>>3349704
>что было стандартом для них до го
Ещё 8-10 лет назад этот ёбаный канцер просто не был массовым.
Аноним 25/12/24 Срд 22:01:12 3350006 267
Я пишу и какаю. Пописал код на го, потом покакал и опять пописал код. Могу писать и какать одновременно, хотя это и неудобно. Впрочем, если посмотреть мой код, разница между этими действиями не особенно видна.
Аноним 26/12/24 Чтв 11:45:42 3350266 268
image.png 60Кб, 652x1092
652x1092
почему сперва принтует второе?
Аноним 26/12/24 Чтв 14:15:12 3350340 269
>>3350266
Потому что сначала рассчитываются аргументы функции, а потом уже вызывается сама функция. У тебя при рассвете аргумента происходит принт, вот он и выводится. А уже потом после того как все pow отработали делается println.
Аноним 26/12/24 Чтв 14:17:19 3350342 270
>>3347428
Тэг актуальный выкатывал?
Аноним 26/12/24 Чтв 21:23:27 3350604 271
Поясните за tcp. Допустим, у меня два моих приложения перекидываются сообщениями по сокету. Если соединение разорвется (у клиента, сервера или обоих), ОС его тихонько восстановит, если сможет, или мне надо этим заниматься? Понятно, что если все совсем упадет, нужно обрабатывать эту ситуацию, но попытается ли оно автоматом переподключиться?
Аноним 27/12/24 Птн 08:10:53 3350722 272
animatedf3zs1vy[...].gif 84Кб, 350x350
350x350
>>3349055
Тоже что и сервис, но поменьше - принципиальной разницы нет. Короче, приложение, которое постоянно запущено. Когда говорят "микросервисная архитектура" - имеют в виду, что они обновляются и деполятся независимо друг от друга, да и всё, пожалуй.
Аноним 27/12/24 Птн 09:33:59 3350749 273
>>3349055
Это методология разработки для стартапов, буквально из говна и палок. Суть в том, что ты нанимаешь любых васянов с разными стеками, кого найдешь, каждому выделяешь сервер-песочницу и они быстро-быстро что-то пишут, не мешая друг другу. Поскольку 99% стартапов никогда не выйдут в прод, можно писать что угодно.
Аноним 27/12/24 Птн 10:00:46 3350761 274
>>3350604
Разрыв соединения - это абстракция, там же нет подключения по одному проводу. Пакеты передаются по физически разным серверам каждый раз по-новому. К тебе приходит какой-то пакет с каким-то идентификатором, ОС или сохраняет его в память или удаляет, если айди неизвестный. Соединение "живет" пока его айди находится во внутренней таблице, а сами пакеты можно слать до бесконечности - ОС их проигнорирует.
Ответ на твой вопрос - оно само "переподключится" в пределах какого-то таймаута.
Аноним 04/01/25 Суб 22:15:58 3355804 275
Как думаете, какая участь будет ждать Го после краха гугла?

Собственно читаю блайнд и вижу, что по многим отзывам дела у гугла идут плохо. Вероятно станет вторым ораклом или мертвым yahoo.
Аноним 04/01/25 Суб 22:57:05 3355827 276
>>3355804
Перейдёт в опенсорс и благодаря тому, что дохуя компаний на него уже подсели, продолжит неплохо жить, продолжая увеличивать свою долю на рынке. Когда-нибудь новая корпорация расхайпает что-то новое, го начнёт стагнировать и сядет в кресло-качалку рядом с пыхой. Кароч не переживай насчёт краха гугла, лучше переживай насчёт нейросеток. Экосистема у го уже сложилась, и он будет жить долго.
Аноним 05/01/25 Вск 16:06:57 3356065 277
Какие программы можно написать на го? Что на нём вообще пишут?
Аноним 05/01/25 Вск 16:27:22 3356076 278
>>3356065
>какие
Любые
>что
Все
Аноним 05/01/25 Вск 16:39:55 3356080 279
>>3356076
Даже графические приложения и ядро ОС?
Аноним 05/01/25 Вск 17:25:07 3356119 280
>>3356080
А что может тебе помешать написать игровой движок или ядро ОС на го? Дерзай, успеха!
Аноним 05/01/25 Вск 17:39:19 3356131 281
>>3356119
Тяжёловесный рантайм, для которого уже нужна ОС, чтобы всё работало.
А графические приложения требуют интеграции с библиотека, а в го, всё что не в его стандартной библиотеке, работает криво и медленно. Я читал, что один вызов внешней С-функции полностью останавливает всю многопоточную систему горутин.
Аноним 05/01/25 Вск 20:29:35 3356216 282
1736098163277.jpg 296Кб, 1080x1637
1080x1637
1736098163303.jpg 242Кб, 1080x584
1080x584
1736098163319.webp 128Кб, 2457x1379
2457x1379
>>3355804
>крах гугла
>дела у гугла идут плохо
💊💊💊💊💊💊💊💊🤡
Аноним 05/01/25 Вск 20:33:11 3356220 283
>>3356065
Kubernetes
Docker
Etcd
Terraform
Prometheus
Traefik
Caddy
Consul
CockroachDB
InfluxDB
MinIO
NATS

Кстати, почему на джаве и сишарпе такое не пишут?
Аноним 05/01/25 Вск 20:49:21 3356232 284
>>3356220
Потому что джава это кал, а про сишарп никто не знает, что там есть unsafe и язык кросплатформенный.
Аноним 05/01/25 Вск 20:54:26 3356235 285
>>3356232
Если джава кал, то почему на ней пишут такие вещи как Kafka, Elasticsearch, Hadoop, Cassandra?
Аноним 05/01/25 Вск 21:33:41 3356257 286
>>3356131
>Тяжёловесный рантайм, для которого уже нужна ОС, чтобы всё работало.
А вот тут чел захотел и по приколу пишет ядро потихоньку, ему почему-то рантайм не мешает. Потому что он открытый и не такой большой, всё можно перепилить даже в одно рыло, как оказывается.
https://github.com/gopher-os/gopher-os
>Я читал, что один вызов внешней С-функции полностью останавливает всю многопоточную систему горутин.
Тебя несколько наебали. Сами по себе эти вызовы ничего не останавливают, но из побочных эффектов усложняют работу сборщика мусора и могут продлить фазу stop-the-world, которая останавливает работу программы, но в C# точно такая же хуйня, тоже сборщик с фазой глобальной паузы, и ничего, геймеры жрут поделия на юнити, и всем норм.
Аноним 06/01/25 Пнд 15:57:34 3356708 287
Стикер 0Кб, 512x512
512x512
>>3355804
>читаю блайнд и вижу, что по многим отзывам дела у гугла идут плохо
как можно быть таким дебилом
Аноним 07/01/25 Втр 18:25:37 3357457 288
>>3356235
Сам не знаю, но поддерживать этот монструозный джавакал в проде то ещё приключение.
мимодевупс
Аноним 09/01/25 Чтв 19:32:09 3358795 289
Нубский, наверное, вопрос, ну да ладно.
Вот есть стандартный http-сервер. И на каждый новый запрос этот сервер создаёт го-рутину. И вот кол-во запросов нарастает, запросы не успевают обрабатываться достаточно быстро, а го-рутины всё спамятся и спамятся, засирая память, пока она не закончится.
https://youtu.be/3fWx5BOiUiY?t=221
А как сделать так, чтобы не память бесконечно засиралась, а просто чтобы время обработки запроса спокойно себе увеличивалось?
Аноним 09/01/25 Чтв 21:11:32 3358845 290
>>3358795
Первое, что надо сделать, это поставить вопрос иначе: мы упёрлись в производительность, как увеличить RPS? Ответ номер один, самый основной: сказать кабану, что нужно больше железа. Ответ номер два, архитектурный: сменить фреймворк с простого на производительный. Ответ номер три, строго после того как 2 сделано: сидеть и профилировать свою лапшу, оптимизируя узкие места. Но лучше см. 1.
Ответ по существу: в видео переполняется очередь запросов, насколько я понял. Тут ничего не сделать, нужно либо их обрабатывать, либо посылать нахуй через rate limiter/circuit breaker, иначе сервис рухнет как в видео.
Аноним 09/01/25 Чтв 21:18:46 3358849 291
>>3356235
>Kafka, Elasticsearch, Hadoop, Cassandra
Это начинали писать еще в бородатые годы. Лет 17-20 назад. Когда никакого гоуленга еще не было в проде. Поэтому и писали на джаве, других подходящих инструментов было не так много.

На момент 2008 года для таких проектов было мало подходящих языков. Помимо Java был C++ и C#. На крестах писать сложно и долго. Сишарп был только под винду. А, ну еще был питон, руби и пыха. Куда же без них. Но на скриптовых языках писать такое большое будет больно.
Аноним 10/01/25 Птн 00:16:55 3358890 292
>>3308295 (OP)
Бля аноны я заебался короче, два дня пыхтел написал свой рест сервис, получилось как по мне божественно, но как обычно мне мое поделие нихуя не нравится и теперь я каждый раз прохожу по каждому этому пункту:
1. Ахуеть как проект нравится, чувствую себя ниибаца гофером
2. Накатывает ебейший ужас от того, какое говно написал, такое ощущение что даже школьник сделал бы лучше, максимум на джуна кажется своя работа
3. Как бомжара роюсь в репозиториях чужих людей чтобы посмотреть "А КАК ТАМ У ЛЮДЕЙ", понимаю что мое не хуже
4. Возвращаюсь к 1 пункту

Скажите аночники вы тоже такое испытывали когда писали на го? Ну не я же один такой, и что думаете о моих мыслях, я все верно понимаю что эти ебучие паттерны проектирования нахуй не работают в Go? А то я травмированная джавамакака одебилевшая от спринга наглухо... Я привык что этот богомерзкий кусок говна спринг это по сути что-то такое "декларативное", то есть ты просто на голом проекте развешиваешь аннотации и расписываешь интерфейсы и все, то есть указываешь что делать и все... рест говно есть, а вот на го все придется писать руками... без паттернов, на 20 функций в одном файле которые ты можешь вызывать ото всюду и всем похуй, так ведь?
Аноним 10/01/25 Птн 04:20:53 3358938 293
>>3358845
>сменить фреймворк с простого на производительный
Можешь привести пару примеров таких фреймворков?
А то я только про fiber слышал.
Аноним 11/01/25 Суб 17:09:35 3360003 294
>>3358845
не проще горизонтально масштабировать....
Аноним 13/01/25 Пнд 10:46:34 3360842 295
Почему за 2024 не вышло ни одной новой книги по Go? Язык всё?
Аноним 13/01/25 Пнд 14:59:02 3361162 296
>>3360842
А зачем? Попроси чатгпт, он прочитает тебе лекцию по любой теме. Меня вот тестированию научил недавно, и работе с OpenAPI.
Аноним 13/01/25 Пнд 16:05:31 3361254 297
>>3361162
Какой уровень экспертизы у чатгпт? Она может полную чушь выдать. Моё мнение, что по простым темам там неплохие ответы, но чем выше сложность, тем они более бредовые, потому что просто не может найти нужную инфу и начинает сочинять.
Аноним 13/01/25 Пнд 16:31:46 3361292 298
Screenshot20250[...].jpg 447Кб, 1080x2117
1080x2117
>>3360842
Что за бред! Понаписали столько, что времени читать нет.
Аноним 13/01/25 Пнд 17:13:04 3361334 299
>>3361292
Это на английском, а на русском ни одной (в том числе и переводных).
Аноним 13/01/25 Пнд 19:26:13 3361423 300
animatedf3zs1vy[...].gif 84Кб, 350x350
350x350
Аноним 13/01/25 Пнд 20:03:09 3361447 301
>>3361423
Про новый стандарт языка. Все книги написаны про древние версии го, где половины фич не описаны. Дженерики точно не описаны, ерроры, модули и т.п.
Аноним 13/01/25 Пнд 23:36:41 3361559 302
>>3361334
Разработчики которые не могут в английский, не нужны.
Аноним 14/01/25 Втр 09:34:12 3361701 303
>>3361559
Разработчики - это не переводчики. Если бы мне нравилось переводить, то пошёл бы переводчиком.
Аноним 14/01/25 Втр 11:19:31 3361759 304
>>3361701
А у нас только переводчики способны владеть несколькими языками?
Аноним 14/01/25 Втр 11:42:19 3361775 305
>>3361701
Читать техническую литературу, это даже не рядом с быть переводчиком. Особенно сейчас когда есть электронные словари и переводчики. Если ты не осилил такой несложный навык, то ты профнепригоден. Иди в 1С.
Аноним 14/01/25 Втр 13:20:08 3361864 306
>>3361775
Меньше слушай всяких инфоцыган, которые форсят эту дурь про обязательный английский, печатать слепым методом, использовать вим или емакс и прочую чепуху.
Аноним 14/01/25 Втр 13:21:51 3361871 307
>>3308295 (OP)
Почему тег не указан и в прошлом треде нет ссылки на новый?
Аноним 14/01/25 Втр 14:47:08 3361986 308
>>3361864
Чел ты реально тупой и не понимаешь элементарных вещей.

Так сложилось исторически что почти всё айти общается на английском языке. Документация на английском, книги пишутся на английском, всё комьюнити общается на английском. По английски обшаются все, и американцы, и немцы, и индусы, и японцы, и русские те кто поумнее.

Да есть переводы на русский язык, но их крайне мало. Ты сам привёл пример. Тикет разработчику библиотеки на русском не напишешь. 99% SO на английском. Основные конференции на английском. Ты просто отрезаешь себя от 99% инфы.

>Меньше слушай всяких инфоцыган, которые форсят эту дурь про обязательный английский
Про то что в айти нужен английский говорили ещё лет 20 назад. Английский на уровне чтения документации было в каждой первой вакансии.
Аноним 14/01/25 Втр 15:57:15 3362031 309
>>3361986
Ага, а ещё программа - это текст, поэтому для максимальной производительности нужно уметь быстро его печатать, а достичь этой скорости можно только в vim и emacs. Если не печатаешь как секретарь-машинистка 100500 символов в сек, то значит не программист.
Аноним 15/01/25 Срд 02:52:55 3362439 310
animatedf3zs1vy[...].gif 84Кб, 350x350
350x350
>>3361447
Ну, очередной справочник получится. Мемуары разработчиков, к примеру, вот это могло бы быть интересно.

>>3361559
А разработчики, которые юзают кривой английский на минималках?

>>3361701
А ведь что-то схожее есть.
Аноним 15/01/25 Срд 09:43:48 3362554 311
Почему автор языка vlang (клон go) русский, но на своём сайте вся написал на английском? Если зайти на многие сайты по языкам, то там иностранные авторы языков пытаются перевести материалы на многие другие языки. А если автор русский, то ни за что не добавит русский язык, проявляя какую-то лютую ненависть к родному языку.
Аноним 15/01/25 Срд 11:51:15 3362663 312
Стикер 0Кб, 512x512
512x512
>>3362031
>высрал какую-то несказанно хуету и рад
Аноним 15/01/25 Срд 11:59:54 3362672 313
>>3362663
>тупой считает всех вокруг тупыми
Аноним 15/01/25 Срд 15:40:47 3362839 314
carbon.png 86Кб, 2048x446
2048x446
>>3308295 (OP)
Господи, гошники, вас нормальные коды писать не научили, что это за параша?
Официальная либа для RabbitMQ бля, миллион параметров из буллов, идущих подряд, так еще и с приставками no
Аноним 15/01/25 Срд 18:22:46 3363047 315
animatedf3zs1vy[...].gif 84Кб, 350x350
350x350
>>3362839
Ты случайно не обчитался книги "Чистый Код"?
Аноним 15/01/25 Срд 21:32:39 3363197 316
Почаны, на РАБоте нашу часть приложения будут переписывать на другой стек, и у меня на выбор - либо ливнуть, либо переучиваться на го и пахать в другой тиме.

Собсна, вопрос в том, как там с востребованностью этого вашего го на срыночке в 2025 (сам я помидор 300 к/наносек, естесна)?

А то не хотелось бы углубляться в технологию, которую в продукшоне три калеки используют.
Аноним 15/01/25 Срд 22:52:00 3363241 317
>>3363197
>как там с востребованностью этого вашего го на срыночке в 2025
В России это сейчас №1 технология для бекенда. Все бигтехи и весь крупняк большую часть новых проектов начинает именно на Го писать.
Даже в моей помойке в прошлом квартале начали легаси монолит распиливать на гошные микросервисы недавно. Сам монолит родом из начала 10х годов был.

За пределами России Go не особо популярен. Так что если хочешь свалить в Германию по блюкарте, то лучше джаву учить или python. Там сильно больше легаси проектов, которые никто не переписывает, поэтому сильно больше старых технологий до сих используется активно.
Аноним 16/01/25 Чтв 00:05:55 3363285 318
Стикер 0Кб, 512x512
512x512
>>3362554
>Почему автор языка vlang (клон go) русский, но на своём сайте вся написал на английском?
Чтобы отсеять таких дебилов как ты. vlang у него клон go
Аноним 16/01/25 Чтв 11:36:23 3363505 319
image.png 33Кб, 631x596
631x596
>>3363047
Не доводилось читать

Бля, даже сишники уже перестали так писать, господи помоги мне пережить это...
Аноним 16/01/25 Чтв 13:57:23 3363665 320
>>3363285
Посколькоу голенг популярен в РФ нужен клон от 1С
пакет главная

импорт "фмт"

функ главная() {
фмт.Печатьстр("Привет, Мир!")
}
Аноним 16/01/25 Чтв 14:44:22 3363684 321
>>3363665
Кстати, сделать не сложно в виде простого препроцессора. Тут буквально замена слов 1 к 1.
А вот что сложно - это переписать всю документацию и учебные материалы.
Аноним 16/01/25 Чтв 14:50:32 3363688 322
>>3362839
Неиронично согласен, библиотека для реббита одно из худших говен с которыми приходилось работать на го. Понятно, что в го нет nullable и необязательных параметров, но это обходится config структурой.

Хуй знает кто и как это писал и выдумывал. Больше на proof-of-concept похоже, чем на реальную библиотеку. А аналогов (рабочих) этой хуйне нет.
Аноним 16/01/25 Чтв 15:35:05 3363710 323
>>3362839

А почему у каких-то параметров есть тип, а у каких-то нет?

мимо, в го вообще ничего не знаю
Аноним 16/01/25 Чтв 15:44:34 3363714 324
>>3363710
Если несколько параметров имеет одинаковый тип - этот тип можно указать один раз в конце цепочки.

Мне такой подход не нравится, я больше избытычность люблю (явное лучше неявного).
Аноним 16/01/25 Чтв 18:40:06 3363951 325
>>3363714
> Если несколько параметров имеет одинаковый тип - этот тип можно указать один раз в конце цепочки.

Как будто бы охуенный подводный камень для трудно уловимых ошибок, не?
Аноним 16/01/25 Чтв 19:25:56 3364008 326
>>3363951
IDE тебе и так подсветит какого типа какой аргумент. Ну и никто не заставляет тебя так писать.
А вообще если много параметров, то проще сразу конфиг структуру прописать, чтобы у тебя и значения по-умолчанию были, и расширяемость без проблем.
Аноним 16/01/25 Чтв 22:43:36 3364167 327
>>3363665
>Посколькоу голенг популярен в РФ нужен клон от 1С
1C это клон FoxPro.

А клон Го должен сделать Яндекс, назвать его Поехали и поручить разработку логотипа Артемию Лебедеву. Вот тогда будет скрепно!
Аноним 17/01/25 Птн 07:43:28 3364274 328
>>3363951
У тебя строго типизированный язык. Тебе компилятор ебло оторвёт, если попытаешься подобное ему скормить
Аноним 17/01/25 Птн 09:28:13 3364311 329
>>3363688
Есть же враппер над ней go-rabbitmq
Аноним 17/01/25 Птн 10:11:10 3364338 330
>>3364274
> У тебя строго типизированный язык.

Го?
Аноним 17/01/25 Птн 10:21:47 3364341 331
>>3364338
А в go можно динамически менять тип переменной? Я что то пропустил в патчноутах?
тока не надо вонять про пустой интерфейс и any
Аноним 17/01/25 Птн 14:36:56 3364601 332
>>3363197
Переучиваться в общем случае всегда худший вариант, если твои текущие умения уже приносят деньги, которые тебя устраивают.
Аноним 17/01/25 Птн 20:08:27 3365064 333
>>3364311
Тот у которого память течет?
Аноним 17/01/25 Птн 20:30:25 3365103 334
It's the Go way :—)
Аноним 21/01/25 Втр 15:32:32 3368176 335
А вы пользуетесь какими-либо ORM в реальных проектах на Go? Что можете из ORM посоветовать?
Изучаю Go, хочу на нем пописать петы. Но как в реальности с бд гошники работают непонятно. В пыхе, например, есть стандарт симфонийский - доктрина, есть элокент в ларе. А в Go что?
Аноним 21/01/25 Втр 21:16:34 3368497 336
164528220516696[...].webp 22Кб, 700x452
700x452
Что скажете?

This is just my opinion as someone who's spent more than a year with go and several years with Java. I tried Go first, and did the whole "idiomatic" Go, approach. I tried it back in the "pure" days before Generics came about.

I would like to preface it by saying that you can definitely build successful products in Golang. This cannot be discussed as it's being done. What follows is my own opinion, about aspects of Golang (and the Golang community at the end) that I dislike.

I have several things I would miss if I went back to Go compared to the current Maven based Java builds I do today. The first two points are the most critical.

The further down we go the less important the point.

Proper Dependency Injection

Doing dependency injection in general is considered Anti-Idiomatic-Go, and in fact I was told by another Senior Go Developer that it was not "Idiomatic" Go to do depenency injection. So under his tutelage I coded massive applications where everything was handwired together. Many of the components could not be tested independently of their dependencies.

Lack of proper package managment

The package handling in Go from the start ranks as among the worst possible setups of all the package management systems - It isn't one. It's something built to support Google's Mono Repo approach, but it does so in a horrible fashion. Setting up central repository mirrors, fixing versions, generating peer dependency graphs and all the things you need simply wasn't possible then, and it's not fully possible today either.

Setting minimum version as default in the newer approaches also sucks a lot of developer joy out of me just thinking about it.

Junior Devs (and quite a few Senior Devs) don't care about dependency versions - As just as the code runs.

I fear that Golang Apps will be opened to a whole host of CVE's over time due to this unfortunately :(

Java's Maven and PHP's Compose are the gold standards. I hope the Golang team looks to these package management systems and basically copy it.

Domain names in package names

This is a horrible anti-pattern which Golang made standard as the "Idiomatic" way.

This means that you basically cannot make properly modular designs, where you rewrite an implementation of a module, but published under your domain name. In that case you have to hand rewrite the codebase to use your packages, instead of just using a different dependency

The "You haven't worked in large codebases" excuse

I've worked in Java codebases reaching into 750k lines of code

Those codebases were easier to read than the 50k lines of Golang code I sometimes had to deal with that pulled in 30+ dependencies and implemented all sorts of work around.

The Java code had proper errors and stacktraces so debugging what went wrong was easy. They also wrote their logs to rotated files in a structured format. And the Golang code just wrote to standard output.

Was the Go code simpler? Yes. Could a Junior Developer start working on it faster? Yes. Could I fix an issue quicker in the Java applikation than in the Golang applikation, oh very much yes.

Lack of stacktraces in the errors

Stacktraces are possible, but they have to be handrolled in the error handling. You need to make a log statement before returning an error, and in that log you need to make sure the line number, function name, file name, etc... are all used.

Lack of Function Overloading

This one really doesn't have any good excuse. I've seen people when they implement a function immediately implement up to eight different versions of it, with the argument type in the name of the function. addInt, addString, addFloat32, addFloat64, addFloatVector, add ... and so forth. And this pattern extends throughout all of the source code with little explanation.

It's standard library isn't "All you need"

It's a myth I was told often when I started. "You only need the STD seriously! Just get a package for the database driver"

Then we needed to talk to SOAP Web Service

With assymetrically signed digital signatures in XML

Then we needed to handle various web security features, and we basically had to handroll each and every one of them. Admittedly this was many years ago.

Then we needed transaction management with multiple databases

The mess of dependencies I see in some Go projects, dependencies that themselves have dependencies, is starting to remind me of Javascript community's "Did you know there's a library for that; Left padding!" chaos. Thankfully Golang devs seem just a little bit more restrained.

Lack of Generics

A collection is a collection, is a collection, is a collection. We shouldn't have to create fourty different types of a box, if all it has to do is contain items and make them accessible.

Java only barely does this right, C# is even better (no type erasure)

The lie that it is more performant than Java or C#

Both Go and Java/C# are garbage collected programs

Go has faster startup time, but while running it does tend to use more CPU

Java and C# tend to use more RAM and have slower startup time

With Java the startup time can be mitigated significantly with GraalVM, I recently demoed a Spring Java APP with 0.002s startup time and no "warm up"

The "Idiomatic" Go excuse

I'll understand what this means the day I comprehend what the "Pythonic Way" is. I'm always willing to discuss specifics, but the above comes off as someone waving their arms and being vague about not liking certain features.

Golang developers disagree internally about what "Idiomatic" Go is.

One Senior Golang developer once told me that copy-pasting Golang code is the idiomatic approach! :O
Data Engineer to Golang Аноним 21/01/25 Втр 22:42:18 3368538 337
1000060040.jpg 56Кб, 604x452
604x452
Привет, голангисты. 8 лет я с базами данных. 4 года работаю дата инженером. Стэк: python/sql/postgres/greenplum/oracle/airflow/docker.

Хочу перекатиться в бекенд к голангистам. Апишки делать нравится. На питухоне делал и неоднократно. Контейнеры умею поднимать и сопровождать. За orm шарю. С чего начать?
Аноним 21/01/25 Втр 23:15:10 3368553 338
>>3368497
>Что скажете?

Автор текста делится своим опытом работы с языком Go (Golang) и сравнивает его с Java, выражая ряд критических замечаний. Вот основные моменты:

Успешность Go: Автор признает, что на Go можно создавать успешные продукты, но выражает недовольство некоторыми аспектами языка и сообщества.

Проблемы с Dependency Injection: В Go dependency injection считается анти-идиоматичным, что приводит к сложностям в тестировании и поддержке кода.

Управление пакетами: Система управления пакетами в Go, по мнению автора, одна из худших. Она не поддерживает централизованные репозитории, фиксацию версий и другие важные функции, что может привести к уязвимостям в будущем.

Имена пакетов с доменными именами: Это усложняет создание модульных проектов и переиспользование кода.

Сложность работы с большими кодовыми базами: Автор отмечает, что даже небольшие проекты на Go с множеством зависимостей могут быть сложнее для понимания и отладки, чем крупные Java-проекты.

Отсутствие стектрейсов в ошибках: В Go стектрейсы приходится создавать вручную, что усложняет отладку.

Отсутствие перегрузки функций: Это приводит к дублированию кода и усложнению его поддержки.

Стандартная библиотека Go: Миф о том, что стандартной библиотеки Go достаточно, развеян опытом автора, которому приходилось самостоятельно реализовывать множество функций.

Отсутствие Generics: Это вынуждает создавать множество типов для однотипных задач.

Производительность Go: Автор опровергает миф о том, что Go быстрее Java или C#, отмечая, что Go использует больше CPU, а Java и C# — больше памяти.

Понятие "идиоматичного" Go: Автор критикует расплывчатость этого понятия и отсутствие единого мнения среди разработчиков.

В целом, автор считает, что Go проще для начинающих, но менее удобен для сложных проектов и профессиональной разработки по сравнению с Java.
Аноним 21/01/25 Втр 23:47:49 3368565 339
>>3368497
По большей части устарело, там где не устарело - в основном булшит.
Аноним 22/01/25 Срд 22:20:26 3369432 340
>>3368176
Насколько я знаю принято чистые sql запросы кидать, орм - моветон
Аноним 23/01/25 Чтв 11:29:41 3369823 341
>>3368538
Если общее понимание it есть, то пробегись по шапке быстро, чтобы понять синтаксис. Потом чтобы прощупать бек иди на ютуб и посмотри видосы типа "Сервис заметок на го" - научишься базовые круды лепить. Можешь видосы Тузова посмотреть. А дальше уже только вручную тыкаться да решать что тебе больше нравиться из подходов. Условно какую либу использовать для крудов и т.д.

> 4 года работаю дата инженером
Раз уж так удачно забрел к нам, можешь, пж, ответить на один вопрос. Щас временно стал de и строю хранилище данных для своей компании. Нужно данные для аналитиков одном месте собирать (из црмок в основном).
Скажи пожалуйста, везде говорят про всякие модели Кимбала, Снежинки, про какие-то слои в DWH. Это прям реально важная и практичная вещь? Просто со стороны выглядит как-то не очень, как что-то сверх архаичное. Я просто хотел через airflow полностью перетягивать данные в базу в чистом виде и там формировать представления (через матвью) и уже их отдавать аналитикам.
Аноним 23/01/25 Чтв 11:43:44 3369851 342
>>3369823
Спасибо за ответ по голангу.

> Скажи пожалуйста, везде говорят про всякие модели Кимбала, Снежинки, про какие-то слои в DWH. Это прям реально важная и практичная вещь?
Если хранилище будет загружаться 10+ DE то важно. Если начнёте все тупо в одной схеме лепить - охуеете через полгода. Кимбал, Инман описывает идеальную картину. Часто достаточно создать слой сырых данных из источников (RAW) и слой витрин (DM). В RAW как есть снапшотами льёшь данные из источников раз в сутки. В DM делаешь SCD type 0, SCD type 2. Также делаешь песочницу чтобы аналитики могли у себя на коленке адхоки считать.

Если прям у тебя терабайты данных и сотни табл, то сложнее. Гугли Data Vault 2.0. Там уже более многоуровневая тема. Слой RAW такой же, слой операционных данных - там где лежит историчность, слой бизнес данных - источник правды, слой регулярных пользовательских данных - команды будут свои DM лепить.

>Я просто хотел через airflow полностью перетягивать данные в базу в чистом виде и там формировать представления (через матвью) и уже их отдавать аналитикам.
Лучше через таблы обычные, чем материализации. Но осиль SCDT2, чтобы хранит историю с датами (from, until).
Аноним 23/01/25 Чтв 13:41:02 3369995 343
>>3369851
Спасибо за развернутый ответ

А работа со слоями это условно переливание данных туда сюда внутри ДВХ? Условно загрузил новые данные в одну таблицу, там их базово трансформировал (условно убрал пустые строки) и потом смерджил с основной таблицей по этому источнику? И только после разливаешь подобным образом по DMам
Аноним 23/01/25 Чтв 13:59:24 3370026 344
>>3369995
> А работа со слоями это условно переливание данных туда сюда внутри ДВХ?
Оно в одну сторону как правило работает. Только вперед. RAW ты вообще не трогаешь. И не фильтруешь. RAW это чистый слепок. А дальше уже дрочеш как хочеш. К слову из одних DM можно делать другие DM. И тогда по факту у тебя первый слой DM можно можно назавать Stage.
Аноним 25/01/25 Суб 02:37:55 3371513 345
Что вы на Го пишите? Какие кейсы?
Чатики на вебсокетах и прослойка между бд+http чтобы жсон отдавать? К тому же даже мускл напрямую может жсон отдавать, как и другие бд без прослойки

Что еще на работе пишите?

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


Я вот думаю учить или не учить его.
Аноним 25/01/25 Суб 11:13:22 3371718 346
>>3371513
Сейчас на работе переписываю некоторые древние сервисы с плюсов на го
Ноль хайлоада, 100% кайфа

> Я вот ебал бизнес-логику на функциях писать
а на чем ты ее еще писать будешь?

>Я вот думаю учить или не учить его
Го учиться за неделю максимум, особенно если ты не совсем зеленый и что то уже писал в своей жизни
Аноним 25/01/25 Суб 13:39:53 3371819 347
>>3371718
>а на чем ты ее еще писать будешь?
На ООП языке с компонентами, с сервисами, с репозиториями и DIP из солид и адаптерами. А на чем еще? Один раз ООП попробушь нормальный, потом на процедурный стиль смотреть не сможешь.

Вот я и думаю нахой мне этот го. А нужен ли.. Вебсокеты вот нужны но логику на функциях писать пиздец.

try/catch хоть есть там?
Аноним 25/01/25 Суб 15:07:50 3371884 348
>>3371819
>Один раз ООП попробушь нормальный, потом на процедурный стиль смотреть не сможешь.
то то большинство новых языков от ООП отказываются (по крайней мере от наследования)

> а ООП языке с компонентами, с сервисами, с репозиториями и DIP из солид и адаптерами
То что ты функцию закопаешь внутрь абстракции функцией быть не перестанет, компоненты\сервисы\репозитории\адаптеры за тебя бизнес-логику не начнут писать
Но если ты в целом про нормальную архитектуру для создания абстракций, условный SOLID, он спокойно на го пишется

Если ты хочешь из го превратить spring какой нибудь то поешь говна у тебя ничего не получится

> try/catch хоть есть там?
Где там? Ты у меня спрашиваешь ради чего? В гугле не смог ввести запрос?

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

> Вот я и думаю нахой мне этот го
Ты там разберись в своих мыслях сначала в следующий раз, чего ты хочешь, чего ты не хочешь, а потом уже за дела берись
Аноним 25/01/25 Суб 16:06:07 3371950 349
>>3371513
>Что вы на Го пишите? Какие кейсы?
Переписываем тот понос, который высрали скуфидоны на жабе. В конце прошлого года нам удалось добиться увольнения всего отдела джаваскуфов, т.к. продакта заебали постоянные нюлы и прочие баги в проде. На текущий момент уже заменили более 50% системы. По факту уже проект потребляет на порядок меньше ресурсов и обрабатывает в три раза больше запросов с минимальным лэтенси. Скуфидонов уволили по собственному, разумеется. Но там одно старичье было 30+
Аноним 25/01/25 Суб 16:55:31 3371968 350
1000060611.jpg 42Кб, 1177x662
1177x662
>>3371950
>30+

И ты такой пришел 19 летний сеньер? Нахуя так толсто пиздеть?
Аноним 25/01/25 Суб 17:45:08 3372009 351
>>3371950
>продакта заебали постоянные нюлы
Ахаха, теперь там не null, а nil. Все по-другому! Ошибок нет совсем ну, если все-таки err = nil
Аноним 25/01/25 Суб 17:58:07 3372021 352
>>3371884
Школьник, решил со взрослыми поговорить? Гуляй давай
Аноним 26/01/25 Вск 12:03:08 3372634 353
image.png 90Кб, 577x549
577x549
Так, сука, у меня сейчас кукуха поедет, я это ваше говно всю ночь учил.
>Read(p []byte) (n int, err error)
Это сигнатура функции
Что блять такое (b *Reader) перед ней?
Аноним 26/01/25 Вск 12:24:40 3372680 354
>>3372634
(b Reader) это ресивер, означающий что это метод структуры Reader
перед названием структуры означает что внутри этого метода ты обращаешься к экземпляру b по указателю, т. е. можешь менять его состояние
Аноним 26/01/25 Вск 12:26:23 3372683 355
>>3372680
ебучее форматирование двача
>>перед названием структуры
звездочка перед названием структуры
Аноним 26/01/25 Вск 14:26:06 3372818 356
>>3372683
Т.е. это своего рода определение кастомного/перегрузка существующего метода для инстанса ридера а ★b внутри него выступает как this/self?
Аноним 26/01/25 Вск 14:55:42 3372838 357
>>3372818
Не совсем понимаю что ты имеешь в виду под "существующим", ты просто определяешь что у объекта типа Reader есть метод Read

Перегрузок в Go как таковых нет, есть перекрытие родительского метода, это вроде разные вещи, там все на встраивании одного в другое сделано.

Поизучай в дополнение про интерфейсы, это маст хев
Аноним 26/01/25 Вск 17:56:41 3372979 358
стоит ли учить golang как первый язык?
Аноним 26/01/25 Вск 23:00:16 3373207 359
Язык для индусов которым за строчки платят
IDE Аноним 26/01/25 Вск 23:20:35 3373215 360
Какой ide юзать? Идея платная. Vscode?
Аноним 27/01/25 Пнд 00:17:52 3373244 361
>>3372979
>>3373207
>>3373215
Чел такие вопросы лучше задавать сразу нейросети.
От себя скажу что видел в живую людей которые начали сразу писать на го и работают пока только с ним.
Мимо петухон.
Аноним 27/01/25 Пнд 06:15:58 3373344 362
>>3371968
Тише, скуфидла, тише.. У нас в команде самый старший это лид и ему 27
Аноним 27/01/25 Пнд 11:04:58 3373451 363
>>3373215
> VS Code
Да, его+плагин за глаза хватает. К тому же ручками потрогаешь всякие переменные окружения и т.д.
Аноним 27/01/25 Пнд 11:07:18 3373455 364
>>3373207
Съеби на питонопарашу и пиши там свои сервисы в одну строку
Аноним 27/01/25 Пнд 13:10:46 3373550 365
иранский-режим-[...].webp 72Кб, 800x800
800x800
>>3373455
> питонопарашу
> пиши там свои сервисы в одну строку
Аноним 27/01/25 Пнд 13:27:18 3373573 366
>>3373455
В питоне я хотя бы один try-except на всю функцию могу написать, а не заливать в гит +10000 -0 на 95% состоящего из if err != nil
Аноним 27/01/25 Пнд 18:10:34 3373861 367
>>3339689
Чел, ты же в курсе, что в промышленном мире эмбед устройство это обычно какой-нибудь STM32 на Cortex с 50мгц процессором? Туда максимум Си, с++ и Раст влезут. Для таких задач ГО знатно пососет. А для жирного Raspberry Pi и Питон сойдёт.
Аноним 27/01/25 Пнд 23:28:47 3374150 368
>>3308295 (OP)
Хочу вкатится, но слишком заебан после основной работы чтобы переучиваться на новый яп.
мимо-пхп-чмоня-битриксоид
Аноним 28/01/25 Втр 00:07:34 3374167 369
>>3374150
Хз что здесь учить. Выучил всё за неделю, ещё столько же потратил на 2 пета, только на прошлой неделе было 4 тех собеса когда по ноде полный посос в найме.
Аноним 28/01/25 Втр 08:40:27 3374348 370
А как вообще в сабже работает GC после того как я написал go build и получил бинарь?
Аноним 28/01/25 Втр 09:15:36 3374363 371
Аноним 28/01/25 Втр 09:56:02 3374373 372
>>3374348
Так же как и в горане
У тебя есть рантайм, периодически (от роста хипа) запускается gc (2 итерации: маркировка и высвобождение. Во время работы будут STW), засыпвет до следующей итерации.
Аноним 28/01/25 Втр 10:04:47 3374376 373
>>3374373
Не, как GC работает я понимаю. Я спрашивал о том, как он работает в бинари который я могу скинуть на другой комп где сам го даже не установлен. Он получается встраивается в сам бинарь?
Аноним 28/01/25 Втр 10:59:35 3374414 374
>>3374376
Го билд тянет за собой весь рантайм, да
Поэтому у тебя hello_world.exe будет весить 2+ мб

Именно поэтому >>3373861 прав
Аноним 28/01/25 Втр 17:09:06 3374823 375
>>3374363
Тест директив компилятора, вернее тестовые данные директив компилятора.
Аноним 28/01/25 Втр 17:56:12 3374875 376
>>3374167
Если на джуна планируешь вкатываться, то конечно нечего
Аноним 28/01/25 Втр 18:28:47 3374898 377
>>3374875
А если сразу на сеньку то что ещё надо?
Аноним 28/01/25 Втр 18:35:49 3374907 378
>>3374823

Ну это же пиздец. Стоило кукарекать на жаба-аннотации, чтобы высрать такое же, но гораздо хуже?
Аноним 28/01/25 Втр 19:11:11 3374937 379
>>3374907
Это не аннотации аннотации в го выглядят по другому, это директивы компилятора. И он они ± так везде выглядят кроме джавы где их нет.
Аноним 28/01/25 Втр 19:24:27 3374955 380
>>3374937
А можешь, пожалуйста, в двух словах рассказать что это и для чего?
Аноним 28/01/25 Втр 23:56:45 3375114 381
>>3374955
Директива компилятора, указывает ему как надо компилировать код. Там возможно много вариантов, но конкретно в directive.go компилятору дается указание не инлайнить код.

Например если у тебя есть примитивная функция
func add(x, y int) int { return x+y }
то компилятор просто вставит код функции в место вызова и полностью уберет функцию, так будет гораздо быстрее работать. А директива
//go:noinline
говорит, что так делать нельзя и надо оставить функцию и вызов.

Компилятор джава таким не занимается, потому там нет директив компиляции и это достаточно бесмысленно. Есть аннотации которые влияют на компилятор, но там другой механизм. В основном это или проверки типа @Override, или постпроцессинг AST типа ломбока. Но в любом случает у тебя в Го компилятор создает единый исполняемый файл, а в Джава - один класс, который не ясно кто и как будет вызывать.
Аноним 29/01/25 Срд 09:12:17 3375213 382
Аноним 30/01/25 Чтв 14:10:47 3376444 383
>>3374898
Балуна какого нибудь послушай, разберешься думаю
Аноним 31/01/25 Птн 02:25:34 3376867 384
>>3375213
Не вижу никаких проблем в самих директивах компиляции. ДК это инструмент для тонкой настройки и они не предназначены для использования в обычных приложениях, так же как и unsafe. И ишью это просто замечание, что кое-кто слишком увлекся ДК.
Аноним 31/01/25 Птн 07:52:40 3376936 385
>>3376867
Так Кох говорит, что нам надо быть осторожными, в изменении сигнатур из INTERNAL, т.к мы можем сломать кому то работу стороннего пакета. Это же тупо, что вы дизайните инкапсуляцию в ЯП, потом даёте юзверям инструмент для обхода этого механизма и теперь вам же необходимо думать шо с етим делать. Просто посмотри кол-во комментов с упоминанием ишью в курс коде. Сами себе в штани насрали
Аноним 31/01/25 Птн 10:08:49 3377004 386
>>3376867

Ты не видишь проблем в том, что КОММЕНТЫ прямо влияют на код?

Если им они так нужны, почему бы просто не сделать аннотации, зачем эти сверхманевры жопой?
Аноним 31/01/25 Птн 10:57:53 3377042 387
>>3377004
Какая нахуй разница как делать эти директивы, это вопрос синтаксиса, которым будут пользоваться полторы калеки
Аноним 31/01/25 Птн 11:00:03 3377047 388
>>3377042
Ну //go:embed пиздец удобная вещь, для хранения swl скриптов. Постоянно на проектах вижу
Аноним 31/01/25 Птн 14:30:54 3377199 389
image.png 222Кб, 415x587
415x587
Аноним 31/01/25 Птн 15:22:24 3377230 390
>>3377199
> вот вот переведут

Я не ожидал, что go_вноеды такие конченные.
Аноним 31/01/25 Птн 16:44:34 3377321 391
>>3377230
джава попущенец брысь в стойло
Аноним 31/01/25 Птн 17:21:51 3377359 392
>>3360842
>Почему за 2024 не вышло ни одной новой книги по Go? Язык всё?
Как это не вышло?

Go Recipes for Developers - Декабрь 2024
Cloud Native Go, 2nd Edition - Октябрь 2024
Automate Your Home Using Go - Август 2024
System Programming Essentials with Go - Июнь 2024
Build an Orchestrator in Go (From Scratch) - Апрель 2024
Effective Go Recipes - Апрель 2024
Mastering Go - Fourth Edition - Март 2024
Go Programming - From Beginner to Professional - Second Edition - Март 2024
Learning Go, 2nd Edition - Январь 2024
Learn Concurrent Programming with Go - Январь 2024

Может ты имел ввиду НЕ ВЫШЛО НА РУССКОМ?
Аноним 31/01/25 Птн 17:27:55 3377367 393
>>3377359
>Automate Your Home Using Go - Август 2024
Совсем там ебанулись?
Аноним 31/01/25 Птн 17:34:44 3377376 394
>>3377321
А если не уйду, обработаешь вручную возникшую ошибку?
Аноним 31/01/25 Птн 22:29:05 3377587 395
>>3373861
Ну, вообще, если я не ошибаюсь, есть аж 2 реализации Го на голом железе, типа тех же STM32 или даже RP2040.
Одна точно есть.
Ну и микро-питон тоже давно уже есть.
И прочее подобное.

А так-то Го - не особенно быстрый язык.
Джава если и медленнее, то не намного.
Так что, в большинстве случаев, Го просто не нужен.

В облаках для сервисов его используют из за низкой стоимости деплоймента и старт-стопов, а не за то, что он охуенно быстрый.
Если надо быстро - пишут на плюсах.
Аноним 31/01/25 Птн 22:33:15 3377589 396
Аноним 31/01/25 Птн 22:55:27 3377597 397
>>3373861
Только pure c/c++ все остальное ересь в ембедед. Микрорайон это прикол в RP. Go прикол такой в ESP32. И да, прям на голом железе нигде не пишут, везде FreeRTOS. Даже если это прямо не объявлено, все равно вызываются директивы freertos. Погугли на чем оно написано.

мимо инженер по rp2040 stm32 esp32 немного схемотехник паять умею тоже
Аноним 01/02/25 Суб 00:59:26 3377678 398
GOвнари, поясните
вот есть Gin, этот фреймворк ни к чему не обязывает, но есть ли best-practices crud'ов? или без задней мысли реализовывать MVC как в спринге и не проебёшься?
Аноним 01/02/25 Суб 01:35:22 3377701 399
>>3377597
>У НАС ВСЕ ТАК ПИШУТ!!!111!!!!! Я СКОЗАЛ
Это не аргумент. Все так делают/никто так не делает/везде такой фреймворк/нигде такого фреймворка нету - это нихера не значит.

Аргументация "все так делают" разбивается элементарно, достаточно найти одного человека делающего на embassy/RTIC/tock os, и уже будут не все.
Аноним 01/02/25 Суб 01:46:07 3377703 400
>>3377678
>crud'ов
Вебмакака, ты вообще понимаешь, что программирование не ограничивается написанием крудов? Зачем тебе писать круды на говне? Оно же совершенно для этого не приспособлено. Пиши на PHP, там все бест практисы крудошлёпания уже давно изобрели - пол интернета на нём написано.
Аноним 01/02/25 Суб 02:58:52 3377712 401
>>3377678
Суть гошки - все писать самому с нуля. С одной стороны это неплохо, фильтр на интеллект, иначе набегут дебилы как в C#. С другой стороны - ты раз за разом пердолишь свои велосипеды, а потом разгребаешь баги, снова и снова.
Аноним 01/02/25 Суб 06:53:02 3377776 402
>>3377712
Выглядит скорее как фильтр на аутизм
Аноним 01/02/25 Суб 07:03:58 3377786 403
>>3377703
>Оно же совершенно для этого не приспособлено
daun
Аноним 01/02/25 Суб 19:04:15 3378431 404
>>3376936
Мне лень разбираться, что там за ишью, но то что можно криво использовать инструмент еще не значит что сам инструмент плохой или неправильно сделан.
Вполне допускаю что ребята из Голанг команды накосячили и использовали директивы компиляции не к месту.

>>3377004
>Ты не видишь проблем в том, что КОММЕНТЫ прямо влияют на код?
Это не комменты, ДК используют синтаксис комментариев, но комментариями не являются. И как по мне это хорошее решение, потому что ДК будут использовать 1,5 человека и ради этого не стоит городить отдельный синтаксис не стоит.
Аноним 02/02/25 Вск 09:29:01 3378808 405
>>3378431
>что ребята из Голанг команды накосячили и использовали директивы компиляции не к месту.
Ты совсем тупой? Иди осиль хотя бы первые пару предложений. Речь не о голанг команде Гугла, а о сторонних разработчиках
Аноним 02/02/25 Вск 12:20:27 3378895 406
Сап. Объяните, пж, джуну, что такое хайлоад в го. Во всех вакансиях вижу требование "работа с high-load", а в чем оно для бекендера проявляется? Условно всяким масштабированием и разворачиванием доп сервисов занимается же девопс. У нас задача просто не писать говнокод или что? Что можно почитать в эту сторону?
Аноним 02/02/25 Вск 17:26:29 3379060 407
>>3378895
Можешь 15 минут пиздеть про кап-теорему. По работе ты все так же пишешь круды, как отцы на джаве 20 лет назад, но делаешь это В ХАЙЛОАДЕ.
Аноним 02/02/25 Вск 17:42:29 3379081 408
>>3378895
Если писал круд для продукта которым пользуются сотни тысяч юзеров в день = работал в хайлоаде.
Для тебя как разраба почти ничем не отличается от обычного крудошлепства, разве что переодически надо подумать почему запрос стал тормозить, где накинуть индексов/инстансов/партиционировать табличку/в редчайших случаях попрофилировать код и найти там узкое место или утечку
Аноним 02/02/25 Вск 17:47:32 3379089 409
>>3379081
Т.е. по сути по большей части все сводится к оптимизации работы с БД? А что касательно самого когда может быть?
Аноним 02/02/25 Вск 17:49:30 3379094 410
>>3379060
Получается ХАЙЛОАД это еще один карго-культ у компаний?
Аноним 02/02/25 Вск 17:59:53 3379106 411
>>3379089
Ну по коду я говорю - иногда могут утекать горутины и надо уметь находить такие узкие места через профилировщик. Или в редких случаях может расходоваться лишняя память тк аллоцируешь лишние объекты, которые можно например переиспользовать через sync.Pool

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

А так 99% пердолинга решается на уровне БД и сетей, а не чисто внутри гошного кода.

Ну или еще приходилось 1 раз писать кэш на базе редиса чтоб снизить лишние запросы во внешнего провайдера = сэкономить на бабках и не делать лишних сетевых запросов в чужой контур которые влияют на общий SLA.
Аноним 02/02/25 Вск 18:06:27 3379114 412
>>3379106
Спасибо за объяснение!
Аноним 02/02/25 Вск 18:45:44 3379149 413
>>3378895
>Сап. Объяните, пж, джуну, что такое хайлоад в го
"Хайлоада" как такового не существует в природе. Единственная страна в мире, где этот термин используется - это Россия. Вообще, говорят о МАСШТАБИРУЕМОСТИ. Решение может быть либо масштабируемым (то есть способным адаптироваться под растущую нагрузку), либо немасштабируемым. Я нигде не встречал, допустим ни в США, ни в Европе, чтобы говорили "highload application".

В России под хайлоадом обычно понимается "кубернетис кластер + компилируемый язык", где пытаются выдавить максимум перфоманса. Короче говоря, это просто как детектор можешь ли ты оптимизировать свой код или нет.
Аноним 03/02/25 Пнд 04:51:49 3379366 414
>>3379094
По сути да.
Хайлоад - это чисто российский термин, на западе используется хайперфоманс.
Хайлоад - этол когда аутисты олимпиадники из яндекса пишут свою кафку, свой кубер, свое небо и аллаха. Получается яндекс маркет.
Хайперфоманс - это вопрос как правильно поделить систему на шарды и куда воткнуть кафку. Решается один раз на уровне архитектора. Для бекенд разработчика разницы никакой, хай перфоманс чи нехай. Если твой сервис тормозит, ты его оптимизируешь точно так же, как и 20 лет назад сайты на пхп - добавляешь индексы в бд и переписываешь код, чтобы достать все данные одним запросом.
Аноним 03/02/25 Пнд 09:57:43 3379451 415
>>3379149
>>3379366
Суета из нихуя как обычно. Спасибо за ликбез, аноны!
Аноним 03/02/25 Пнд 15:29:58 3379748 416
Не могу понять, нахуй вообще нужны интерфейсы?
Аноним 03/02/25 Пнд 15:59:37 3379797 417
>>3379366
>Хайлоад - этол когда аутисты олимпиадники из яндекса пишут свою кафку, свой кубер, свое небо и аллаха. Получается яндекс маркет.
Яндекс написал Кликхаус, а Кафку написали в Линкедыне, в обоих случаях это всё писалось для внутренних нужд. А уже потом опенсорсилось и стало стандартом в индустрии.

Если ты дефолт макака на дефолтной галере, то тогда да, для тебя весь
>Хайперфоманс - это вопрос как правильно поделить систему на шарды и куда воткнуть кафку.
И всё. Большего тебе не положено.
Аноним 03/02/25 Пнд 17:41:02 3379884 418
>>3378808
Чо ты учираешься по мелочам? Пофиг кто там использует эти ДК неправильно, суть не меняется. ДК тонкий инструмент, который не предназначен для повседневного использования, так же как и ансейф и ассемблер. Но они нужны и потому они есть, т.к. при правильном использования они способны улучшить перфоманс и дать возможности, которые без них будут недоступны.
Аноним 03/02/25 Пнд 19:40:39 3379935 419
>>3379884
Ну то есть команда языка не может редактировать рантайм языка, потому что такие умники как ты "тонко и аккуратно" завязались на приватных функциях.
Аноним 03/02/25 Пнд 20:58:31 3380014 420
>>3379366
>добавляешь индексы в бд и переписываешь код, чтобы достать все данные одним запросом.
Два чаю. Именно так и увеличиваю производительность. Добавляю индекс. В особо тяжёлых случаях дроблю на партиции по дням и за последний день/месяц вытаскиваю.
Аноним 04/02/25 Втр 03:42:44 3380200 421
чот посмотрел на синтаксис и на конструкции и думаю ну его нахуй эти го, мо

везде if error != nil

определение функция для структур, всё завёрнуто в кучу скобок

как это всё читать и понимать

рыготина не иначе
Аноним 04/02/25 Втр 03:44:46 3380201 422
спрашивают "а что на нем пишут", будто вкатун кроме простого роутинга с крудом сможет осилить докер или хотя бы простую полезную утилиту

тут нужно в код уметь по настоящему, а не по языкам прыгать
Аноним 04/02/25 Втр 12:38:00 3380503 423
>>3380200
> всё завёрнуто в кучу скобок
Обычный си-подобный синтаксис, если ты его не смог осилить то тебе точно нужно в айти?
Аноним 04/02/25 Втр 14:27:02 3380621 424
>>3380503
а мне наоборот нравится ГОшный синтаксис
после питона хорошо заходит
господи всё что угодно только не джава
мимопроходил
Аноним 04/02/25 Втр 14:52:19 3380643 425
>>3379935
Команде языка, надо написать, что через 2 релиза мы меняем все/какие-то конкретные внутренности и поменять их как и было обещано. В случае воя на болотах сказать, что вас предупреждали не завязываться на внутренние детали.

Всё это проходили в джаве, там куча умников завязалась на Unsafe. Их предупредили что уберут доступ, дали альтернативы, и убрали доступ. Больше во внутренности почти никто не лезет.

Это вообще не техническая проблема, а организационная. Точно так же в С++ можно завязаться на особенности какого-то конкретного компилятора, но это же не проблема языка.
Аноним 04/02/25 Втр 15:36:07 3380674 426
Аноним 04/02/25 Втр 17:38:52 3380802 427
>>3380674
>Может пойдешь, в мейнтенеры залетишь и пояснишь как команда должна делать
Если появятся позиции в команде, пойду.
Аноним 05/02/25 Срд 15:30:44 3381454 428
Есть разница между этими 2умя инициализациями?:
var lock sync.Mutex
и
lock := new(sync.Mutex)
?
Аноним 05/02/25 Срд 23:23:11 3382006 429
>>3381454
В Effective Go про это написано.
Аноним 06/02/25 Чтв 11:17:04 3382227 430
dto - go-way или хуйня из под коня?
Аноним 06/02/25 Чтв 23:35:48 3382703 431
>>3382227
>dto - go-way или хуйня из под коня?
DTS

И в целом, говей это писать много кода с минимом абстракций. Так что DTS на каждый чих - это кошерно.
Аноним 07/02/25 Птн 05:57:55 3382761 432
Аноним 07/02/25 Птн 09:04:52 3382826 433
image.png 1509Кб, 1798x1055
1798x1055
>>3382761
То, что никогда больше не повторится...
Аноним 07/02/25 Птн 10:51:07 3382900 434
>>3382826
проиграл пиздец
ты видимо весёлый и задорный, так расскажи в принципе про архитектуру
всё проекты что видел, реализуют джавовский пыховский MVC, где есть:
1. handler/controller
2. service
3. repository
4. ДТО/модель бд

является ли это более-менее "универсальным" подходом?
скажешь что архитектура зависит от проекта и универсального решения нет - я убьюсь нахуй
вот как мне писать типовые круды на 2.5 сущности?
Аноним 07/02/25 Птн 11:31:52 3382928 435
>>3382900
Так и пиши. Еще вспомни про валидацию инпута, логирование аутпута, трейсы каждого внешнего вызова, в итоге ты напишешь свой спринг, но на го.
Аноним 07/02/25 Птн 11:59:46 3382943 436
>>3382928
Надеюсь в будущих версиях завезут аннотации или декораторы и тогда можно будет свой спринг пилить
Аноним 07/02/25 Птн 12:10:06 3382950 437
>>3382943
>>3382928
в effective go и прочих первоисточниках ничего нет по этому поводу
направьте меня, пожалуйста, на пусть истинный, где черпать инфу об архитектуре?
Аноним 07/02/25 Птн 12:26:38 3382966 438
>>3382761
Это как DTO, только вместе, object - struct.
Аноним 07/02/25 Птн 14:15:17 3383077 439
>>3382950
Ты сам ответил на свой вопрос. Берешь джавовский спринг или дотнетовский аспнет и смотришь. Везде все одинаковое.

>в effective go и прочих первоисточниках ничего нет по этому поводу
Авторам го неинтересна эта ваша архитектура, им интересно ковыряться в байтах. Там литерали сидят деды и вспоминают, как в 1971 году объебались лсд и придумали while(d++=s++) Поэтому го такой кривой.
Аноним 07/02/25 Птн 14:49:54 3383137 440
Аноним 08/02/25 Суб 09:35:11 3383651 441
Есть хоть какие-то сливы курсов на русском или учебники для тех кто с нуля вкатывается?
Аноним 08/02/25 Суб 10:53:41 3383688 442
image.png 47Кб, 384x240
384x240
>>3383651
>на русском
Возвращайся когда станешь, ммм... образованнее!
Аноним 08/02/25 Суб 12:23:49 3383765 443
Аноним 08/02/25 Суб 20:49:01 3384205 444
>>3383651
Если ты с нуля в программировании вкатываешься в ГОвно, то идея хуета - ГОвно живет лишь в бигтехах, куда тебя возьмут без знаний в ГОвне
Если ты знаешь какой-то язык, то ГОвно ты выучишь за 2-3 дня без учебников
Аноним 08/02/25 Суб 22:13:53 3384238 445
>>3384205
У меня есть кейс для вката в ГОвно с нуля. Я уже вкатился в девопсы, но на текущем месте (и на прошлом тоже) от меня не требуется писать никакой код.
При этом в вакансиях постоянно требуется знание ГОвна.

Моя задача в том, чтобы минимально изучить ГОвно для прохождения собеса (сильно не ебут обычно) и уметь наГОвнякать на коленке очередной ненужный никому костыль (ака оператор для кубера).

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

Короче, нужна какая-то нормальная база, как студентам дают, но на ГОвне. Есть что-нибудь такое? На изучение других нахуй мне не нужных языков я тратить время не хочу.
Аноним 08/02/25 Суб 22:15:31 3384239 446
>>3384205
а с какого языка начать, чтобы с нуля вкатываться?
Аноним 08/02/25 Суб 22:37:52 3384248 447
>>3384238

Так в закрепе же все есть:

- Проходишь a tour of go (попутно долбая гпт для объяснений где непонятно)
- Решаешь задачки (к примеру, с codingbat.com)
Аноним 08/02/25 Суб 22:50:21 3384252 448
>>3384248
>Проходишь a tour of go (попутно долбая гпт для объяснений где непонятно)
Именно так и начал и просто пиздец как плохо пошло. Сам материал какой-то тухлый и скучный и долбание этого нейродурачка тоже продуктивности изучению не добавляет.

Не выебываюсь, просто реквестирую более годных и подробных материалов, если такие кто-то знает. Заранее благодарен
Аноним 09/02/25 Вск 06:29:01 3384317 449
>>3384252
> какой-то тухлый и скучный
Так это го язык такой, лол.
Я блять тоже ради денег пытаюсь себя заставить погрузиться в это говно, но фана нет такого который есть в пыхе.
Аноним 09/02/25 Вск 06:34:04 3384320 450
>>3384317
Такая же фигня. Перекатываюсь на го с божественного тайпскрипта, аж скулы сводит от уныния.
Аноним 09/02/25 Вск 12:22:39 3384483 451
>>3384317
>>3384320
Ебланы с двача в который раз не понимаю что го как и любой другой язык программирования это всего лишь инструмент, зачастую заточенный под определенный круг задач.
В следствие чего, эти макаки беря в руки молоток после многих лет использования пилой (спрашивается, на кой хуй они вообще меняют их горячо любимый, "божественный" инструмент) и начинают кудахтать, с какого хрена молотком нельзя пилить, после чего начинают пытаться разжечь очередной никому не нужный холивар.
Аноним 09/02/25 Вск 13:41:19 3384533 452
image.png 224Кб, 415x587
415x587
>>3384252
24 числа выходит перевод 2 издания
если умеешь в ангельский - читай сейчас
/t
Аноним 09/02/25 Вск 14:25:02 3384583 453
>>3384483
Ой простите, забыл спросить сосачершу-вахтершу, можно ли высказывать свое мнение. Мань, я в курсе, для чего создавался го. То, что его притащили в крудошлепство, не моя вина, но мне с этим жить.
Аноним 09/02/25 Вск 14:33:29 3384595 454
>>3384583
>я в курсе, для чего создавался го
для чего?
мимо проходил
Аноним 09/02/25 Вск 14:37:18 3384599 455
Аноним 09/02/25 Вск 19:05:15 3384870 456
>>3384583
>>3384599
>это был системный язык программирования для сервер-сайда

сервер сайд не учитывающий крудошлепство это конечно сильно
Аноним 10/02/25 Пнд 16:36:04 3385841 457
Programs that modify data being simultaneously accessed by multiple goroutines must serialize such access.

To serialize access, protect the data with channel operations or other synchronization primitives such as those in the sync and sync/atomic packages.

If you must read the rest of this document to understand the behavior of your program, you are being too clever.

Don't be clever.

Или когда тебе просто надо пройти ебучее интервью
Аноним 10/02/25 Пнд 18:45:21 3385907 458
>>3385841
>If you must read the rest of this document to understand the behavior >of your program, you are being too clever.
>Don't be clever.

Прочитал этот документ. Хз, что там сверхъестественного. Просто гошная асинронщина чуть более заумным языком.
Аноним 11/02/25 Втр 09:53:11 3386298 459
>>3384533
Тоже жду выход этой книжки. Как выложат, сразу начну по ней учить го.
Аноним 11/02/25 Втр 10:36:57 3386336 460
я обязательно найду джуновские вакансии...
Аноним 11/02/25 Втр 15:59:34 3386622 461
Случайно вкатился на го, читал из него только Go Programming language, что из продвинутых книг из списка с шапки стоит читать? Точно не буду читать Interpreter/Compiler, потому что пока на Си этого скама хватило. Слышал Cloud native go хорошая книга, начать с нее или есть что-то более подходящее? (до этого писал код на C#/F#)
Аноним 11/02/25 Втр 16:24:52 3386656 462
image.png 11Кб, 234x333
234x333
Можно ли как-нибудь обойтись без уродства с постоянным ⭐s?
Аноним 11/02/25 Втр 17:37:44 3386698 463
>>3386622
Чувак... Всем похую. Никто ничего за тебя делать не будет. Если не будешь читать, миру от этого не жарко ни холодно. Твои знания останутся на том же уровне. Чуда не произойдёт и дятел в академика не превратится.
Аноним 11/02/25 Втр 20:26:27 3386850 464
image.png 24Кб, 257x371
257x371
>>3386656
Получается альтернативы такому решению нет?
Аноним 12/02/25 Срд 00:27:21 3386970 465
>>3386850
>>3386656
Какому уродству? Не нравятся указатели?
Аноним 12/02/25 Срд 00:30:09 3386971 466
>>3386970
очевидно чел любит сладкое
Аноним 12/02/25 Срд 05:32:55 3387025 467
ссылку в конфу запилите
Аноним 12/02/25 Срд 08:53:44 3387154 468
>>3386850
В 2к25м писать реализацию не на дженериках...
Аноним 12/02/25 Срд 20:46:31 3387955 469
>>3387154
>Писать реализацию на дженериках на литкоде
Аноним 13/02/25 Чтв 16:11:54 3388477 470
>>3387955
Ну так пиши сразу на дженериках. В чем проблема ?
Аноним 13/02/25 Чтв 23:13:44 3388783 471
>>3386850
>Получается альтернативы такому решению нет?
Если ты не пишешь какой-то приватный тип который будет использоваться только в этом пакете, то рекомендуется использовать структуру с приватным слайсом. Так можно контролировать что там с твоими данными происходит, ну и код выглядит бодрее.
https://go.dev/play/p/pQe3xLnDExx
Аноним 14/02/25 Птн 21:18:58 3389386 472
Вот Го и умер...
Аноним 14/02/25 Птн 21:59:02 3389404 473
Аноним 15/02/25 Суб 00:00:49 3389456 474
Нужна истинная случайность, я вот такой код сочинил:

var previous int

func getUnconditionalValue() int {
n := previous * 17
previous = n / 3 + n % 3
return previous
}


Что думаете, прокатит или нет? Ну, с потокобезопасностью проблемы, понятно.
Аноним 15/02/25 Суб 00:24:25 3389471 475
>>3389456
Начнем с того, что нихуя это не случайность, тем более "истинная"
Аноним 15/02/25 Суб 00:51:48 3389475 476
>>3389456
А где истинная случайность?
Аноним 15/02/25 Суб 01:00:00 3389478 477
Аноним 15/02/25 Суб 01:37:17 3389487 478
Аноним 15/02/25 Суб 01:46:12 3389490 479
>>3385841

Какие же голангеры тупые всё-таки. Я вот думаю, а в каком треде на этой борде их всё-таки больше?

С одной стороны у вас почти полноценный системный язык, но с удобным сборщиком мусора и асинхронщиной изкоробки, но при этом каждый второй дебил здесь не может постичь указатели, а когда речь заходит об основных фичах, то мозг вообще в перезагрузку уходит.
Аноним 15/02/25 Суб 10:21:08 3389584 480
Нужно написать REST-клиент, т.е. для этого целиком надо прочитать.
Аноним 15/02/25 Суб 11:36:33 3389608 481
>>3384533
Ещё неделю ждать, а уже хочется начать учить гошку...
Аноним 15/02/25 Суб 13:00:32 3389668 482
>>3389490
>постичь указатели
В языке с автоматической очисткой памяти?
Ещё что то про тупых пукает
Аноним 15/02/25 Суб 14:44:47 3389718 483
image.png 21Кб, 589x425
589x425
image.png 19Кб, 471x395
471x395
>>3389608
я учу я справлюсь у меня получится я смог сделать To-do в консоли
делай тоже у тебя получится ты справишься ты сможешь у тебя выйдет достойно ты не облажаешься
Аноним 15/02/25 Суб 15:07:12 3389736 484
>>3389718
А как учить без книжки? Я же не знаю какие там конструкции в языке, какие типы и т.п.
А когда учишь по книжке, то последовательно проходишь все этапы и ничего не пропускаешь. Нет пробелов в знаниях.
Аноним 15/02/25 Суб 15:20:31 3389741 485
Аноним 15/02/25 Суб 16:28:37 3389781 486
>>3389741
>Tour of Go
Там же не на русском всё!
Аноним 15/02/25 Суб 19:43:09 3389919 487
>>3389781
ты справишься с переводчиком он вроде был переведён на русский когда то, потом русский перевод убрали
МУЖИКИ
вопрос
Собираемся с другом (фронт ts/react) реализовывать наш скрепный аналог Trello на вебсокетах.
Пока вижу такой путь:
1. по быстрому разбираю многопоточку (за завтра должен управиться, сейчас вообще 0 в ней)
2. по быстрому разбираю net/http (неизвестно, с докой под рукой - должен справляться)
3. по быстрому разбираю как клепать jwt-auth в go
4. по быстрому разбираю что такое веб сокеты и что вообще с ними делать
начинаю ебашить
что-то упустил?
архитектура - разобью всё на models/handlers/services/repositories
ОРМ пользоваться не буду ибо не умею, plain SQL - норм тема
какие мои шансы не проебаться и насколько много мне ещё надо выучить/понять? консольный task-cli реализовать могу и сейчас реализовать, такой вот уровень знаний гордое нихуя
есть опыт построение калопровода-круда на джанго
Аноним 15/02/25 Суб 19:45:56 3389921 488
>>3389919
цель поекта - научиться реализовывать круды на го
монолит, без кафки без хуёв
+ надо разобрать логирование
Аноним 15/02/25 Суб 20:12:47 3389925 489
>>3389921
>>3389919
вам лет-то сколько? молодые-шутливые или че? типа бутылка водки и бессонная ночь?
я просто опытный уже, скорее всего выйдет куча костылей и говна с такой спешкой...
Аноним 15/02/25 Суб 20:25:19 3389928 490
>>3389919
Я лучше подожду книжку. Надеюсь её сразу на торрент выложат и не придётся долго ждать.
Аноним 15/02/25 Суб 20:36:08 3389936 491
image.png 84Кб, 1437x808
1437x808
>>3389925
Спешки нет, делаем для себя, но фронт знает больше меня во фронте и яростно рвётся в бой, хочу не отставать.
22 годика, магистранты.
Начинаю потихоньку накидывать ERD.
Я, блять, даже функционал Trello то не совсем представляю, лол
Аноним 15/02/25 Суб 20:37:25 3389938 492
>>3389928
я тоже активно жду, сольют думаю сразу, всего то 9 дней осталось...
Аноним 15/02/25 Суб 21:49:43 3389958 493
image.png 101Кб, 1302x727
1302x727
заебись мужики, первые проблемы:
хотим сделать динамическую хуйню (поля таски можно crud). теперь возникает вопрос - а как нахуй?
1. JSONB - обработка не беке = норм/10
2. обработка на фронте = хуйня/10
3. mongodb, не думал, что когда то сущности будут меняться = ниебу/10, вроде норм, вроде хуйня
json в базе данных, это какая нормальная форма? видимо так и придётся делать.
Аноним 15/02/25 Суб 23:00:09 3389978 494
>>3389958
Ты точно уверен, что вам нужна эта динамика? Почему нельзя просто разложить по таблицам?
Если без динамики ну совсем никак - jsonb в постгресе. Монга хуйня без задач.
Аноним 15/02/25 Суб 23:17:55 3389983 495
>>3389958
>>3389978
Держать json в базе - ебаное извращенство. Раскладывай по таблицам и связывай по FK. Вне базы свои json крути.

мимо de
Аноним 15/02/25 Суб 23:52:32 3390001 496
>>3389978
>>3389983
Да я долбоёб, извиняюсь, через EAV всё прекрасно будет работать. Благодарю!
Аноним 16/02/25 Вск 14:47:18 3390255 497
>>3389983
>Держать json в базе - ебаное извращенство
Два чая! В базе надо держать protobuf - Google approved solution.
Аноним 16/02/25 Вск 23:51:52 3390573 498
Аноним 20/02/25 Чтв 16:31:12 3393226 499
>>3390573
Вот эта >>3384533
Эх, скорей бы уже вышла, хочется гошку начать учить, а то так перегорю и потом расхочется.
Аноним 20/02/25 Чтв 22:16:20 3393524 500
>>3393226
Начинай учить прямо сейчас и ничего не жди
Аноним 21/02/25 Птн 08:43:08 3393754 501
>>3393524
Но книга же ещё не вышла, источника инфы нет.
Аноним 23/02/25 Вск 21:58:37 3395802 502
Аноним 23/02/25 Вск 22:45:17 3395823 503
>>3395802
Ебанулся? Ты дал ссылку на этот же тред
Аноним 24/02/25 Пнд 08:21:25 3395929 504
>>3384533
Во сколько выложат?
Аноним 24/02/25 Пнд 08:25:58 3395932 505
>>3390005 (OP)
>>3390005 (OP)
>>3390005 (OP)
Нормальный перекат.
Там ОП-кривожоп, тупорылый, даже перекатить не может. Ещё программистом собрался стать, с такими навыками его с любой работы уволят.
Аноним 24/02/25 Пнд 22:01:48 3396533 506
>>3395929
кто скинул 40р - уже читает
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов