Сохранен 572
https://2ch.hk/pr/res/2510725.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Cамого МУЖЕСТВЕННОГО в мире языка Go тред №21 /go/ Go или Golang — компилируемый язык программирова

 Аноним 10/11/22 Чтв 17:07:27 #1 №2510725 
image.png
image.png
image.png
image.png
Cамого МУЖЕСТВЕННОГО в мире языка Go тред №21 /go/

Go или Golang — компилируемый язык программирования от создателей таких шедевров, как UTF–8, язык С, UNIX, Plan9 и других. Go поддерживает типобезопасность, богатую и универсальную стандартную библиотеку функций и инновационные семантики одновременности: все то, что мы в индустрии называем concurrency и parallelism. На сегодня язык Go является маяком стабильности, прагматичности, де факто представляет из себя стандарт в мире бэкенд–микросервисов и серверного оркестрирования.

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

Растобляди завидуют, сектантская запарта не переваривает.

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

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

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

Обновляемый список с пакетами: https://github.com/avelino/awesome-go

Небольшой канал треда: t.me/golang2ch и даже живой

Предыдущий тред умирает здесь: >>1986204
Аноним 10/11/22 Чтв 17:09:25 #2 №2510728 
Предыдущий
>>2409760
https://2ch.hk/pr/arch/2022-11-09/res/2409760.html
Аноним 12/11/22 Суб 19:10:39 #3 №2512269 
>>2510725 (OP)
>Небольшой канал треда: t.me/golang2ch и даже живой
Он слишком живой. Если его читать (тем более участвовать), кто там куда съездил, кто чё купил, кто какую хуйню сделал - на работу времени не останется.
Аноним 12/11/22 Суб 19:12:27 #4 №2512273 
Ну чо, гоферы, завезли вам уже эксепшены или пока ещё нет?
Аноним 12/11/22 Суб 19:19:11 #5 №2512285 
>>2512273
Эксепшены антипродуктивны, смотри тридцатилетний срач в джаве насчет их checked exception
Аноним 12/11/22 Суб 19:29:52 #6 №2512290 
>>2512285
В итоге unchecked победили и используются повсеместно, а легаси с checked ловят и оборачивают в unchecked. В других языках, где есть эксепшены, нет unchecked вообще.
Аноним 13/11/22 Вск 20:46:24 #7 №2513158 
>>2510725 (OP)
Господа двачеры-прогроммачеры. Я новичок в Go, так что просьба не кидаться говном

Задача следующая: я пишу скрипт, который будет записывать в файл ответы ссылки URL 404, 400, 200, 306 и т.д.

Пытаюсь это решить через file.WriteString("\nCodeResponse{status=%d}", code)

Но получаю предупреждение too many arguments in call to file.WriteString. Собственно где я мудак? Я знаю, что везде
Аноним 13/11/22 Вск 20:51:33 #8 №2513165 
>>2513158
WriteString() принимает ровно один аргумент - строку, форматировать он не умеет, делай это через fmt.Sprintf().
Аноним 13/11/22 Вск 21:07:17 #9 №2513181 
>>2513165
пасиба
Аноним 15/11/22 Втр 00:38:06 #10 №2514094 
Парни, как вообще можно попасть на позицию джуна с го, если всем нужен опыт работы, а вакансий на позицию стажера без опыта в том же спб нема. Пытался найти удаленку, но много кто посылал куда подальше, ибо я из рф... странная тема.

Всем пис.
Аноним 15/11/22 Втр 08:06:54 #11 №2514154 
>>2514094
Кто ищет волшебника - получает сказочника, вот и все
Аноним 15/11/22 Втр 11:52:47 #12 №2514226 
>>2514094
Через другие языки. То же касается и ноды. Работаешь 1-2 года на пайтоне/пхп/джаве/шарпе, параллельно качаешь го, после года работы параллельно работе ищешь работу на го. Либо тех. вышку имеешь и вкатываешься легчайше в любой стек, хоть в хаскель.
Аноним 15/11/22 Втр 16:09:25 #13 №2514397 
Почему в этом вашем блядском го нет оператора возведения в степень? Пиздец нахуй удобный высокоуровневный язык, ссанина пучеглазая.
Аноним 15/11/22 Втр 16:12:18 #14 №2514399 
>>2514397
напиши ёпт

мимо не гошник
Аноним 15/11/22 Втр 16:14:57 #15 №2514400 
>>2514399
Как я "напишу" тебе новый оператор в языке, в котором нельзя создавать новые операторы, еблан ты тупорылый? Говна поешь, макака безмозглая.
Аноним 15/11/22 Втр 16:27:10 #16 №2514404 
>>2514400
Это троллинг тупостью или тупость?
Аноним 15/11/22 Втр 17:17:19 #17 №2514438 
>>2510725 (OP)
Короче, есть этот ваш пакаж, назовем его api, в нем есть файл, представим, что называется он testoviykal.go.
Вопрос: можно ли внутри текущего (api) пакажа заалиасить конкретно этот файл?
Аноним 15/11/22 Втр 17:17:59 #18 №2514439 
>>2514438
а-ля import test "api/testoviykal"
Аноним 15/11/22 Втр 21:12:33 #19 №2514575 
>>2514438
на отдельные файлы ссылаться нельзя, гошка работает с пакетами, а пакет - это все файлики в папке.
хз что ты хочешь вообще. либо уноси файл в отдельный пакет, либо наворачивай все функции из файла как методы на структе, либо юзай билд теги/суффиксы платформы, чтобы при билде выбрать файл.
Аноним 16/11/22 Срд 09:01:44 #20 №2514785 
Можно ли на го писать кроссплатформенные десктопные приложения?
Аноним 16/11/22 Срд 09:29:57 #21 №2514821 
>>2514785
Можно, но инфраструктура сырая.
Аноним 16/11/22 Срд 10:09:41 #22 №2514861 
>>2514785
Го это не про десктоп от слова совсем. Забудь про гуи на го.
Аноним 17/11/22 Чтв 01:30:35 #23 №2515599 
>>2514785
можно, fyne или wails тебе в помощь
Аноним 17/11/22 Чтв 10:33:17 #24 №2515732 
Хочу написать на Go скрипт, который будет до определённого момента грузить ОЗУ, например на +50%. не более. Как это можно сделать, в сторону какого пакета смотреть?
Аноним 17/11/22 Чтв 12:36:11 #25 №2515832 
>>2514575
Дегенератский язык, пиздец просто
Аноним 17/11/22 Чтв 23:50:47 #26 №2516355 
>>2515832
я больше охуеваю от того как в жс файлики по одному импортят, когда во фронт коммичу
Аноним 17/11/22 Чтв 23:53:39 #27 №2516357 
>>2515732
GOMEMLIMIT поставь и сри байтами?
Аноним 18/11/22 Птн 21:12:25 #28 №2517021 
image.png
Какой подход более идеоматичен при работе с коллекциями в го? Бросать еррор когда коллекция пустая, либо же сделать отдельный метод IsEmpty, как в жабе?
Аноним 18/11/22 Птн 21:15:24 #29 №2517027 
>>2517021
Да.
Аноним 18/11/22 Птн 21:59:46 #30 №2517065 
>>2510725 (OP)
Что вообще от джуна-стажера го щас требуют? На текущей работе сетевик, по фану написал CRM для внутреннего пользования. JWT аутентификация, рест апи, асинхронные задачи типа отправки на печать, почты, етц. Сойдет за пет прожект чтобы к резюме прикладывать?
Хуй знает че еще такого надо уметь, может архитектуру/паттерны надрочить, или с grpc че нить сделать
Аноним 19/11/22 Суб 01:09:04 #31 №2517172 
Перекатываюсь к вам из пистона.
Почему не сделали конструкторы для классов структур?
Почему не сделали встроенный set?

Язык на первый взгляд кажется очень простой и прямой палкой как си, но при это не дает тебе нихуя сделать
Аноним 19/11/22 Суб 01:15:18 #32 №2517179 
>>2517172
> Почему не сделали конструкторы для классов структур?
Потому что Go - не объектно-ориентированный язык. а что-то вроде высокоуровневой сишки.
> Почему не сделали встроенный set?
До определённого времени не было дженериков, и предлагалось использовать map. А теперь хуй кто будет вводить кейворд set, сразу всё легаси перестанет компилироваться, слишком уж популярное имя для идентификаторов.
Аноним 19/11/22 Суб 01:26:05 #33 №2517184 
>>2517179
>а что-то вроде высокоуровневой сишки
Ну ниудобна жи! С комфортом бизнес-логику не поделать так же как на пистоне или жабе. Есть примеры классических приложений (не инструментов) с открытым кодом? Хотя бы что-то вроде магазина или борды.
Аноним 19/11/22 Суб 01:58:36 #34 №2517204 
>>2517184
> С комфортом бизнес-логику не поделать так же как на пистоне или жабе
А здесь любят страдать, срут глобальными переменными, пишут велосипеды и кодогенераторы для добавления сахара, а большие приложения здесь писать очень больно, поэтому микросервисы здесь не столько современный подход, сколько вынужденная мера.
> Хотя бы что-то вроде магазина или борды
Ими весь гитхаб завален. Например, https://github.com/DexterHaslem/dexchan
Аноним 19/11/22 Суб 11:13:17 #35 №2517319 
>>2517172
Пару лет назад задался тем же вопросом по поводу сетов, тоже перекатывался с питона.
Сейчас уже не понимаю, зачем нужен условный сет/хип/кью в стд либе, при желании реализуется за 5 мин, а нужно раз в месяц.
Аноним 19/11/22 Суб 12:06:01 #36 №2517342 
>>2517319
>нужно раз в месяц
Я литкод ежедневно нарешиваю. Мне нужно.
Аноним 19/11/22 Суб 15:58:33 #37 №2517512 
Доброго ранку. Писал на сишечке и плюсах, вот если я чичас буду учить го, то на стажера возьмут? Индекс вката в стажеры какой сейчас?
Аноним 19/11/22 Суб 18:29:15 #38 №2517597 
Как в 2022 делать go run программа.go если программа из кучи модулей?
Нашел на гитхабе кучку простых примеров, но ничего не запускается.
Я понимаю, что есть современный способ, когда через go mod init создаешь файлики, go mod get качаешь все что нужно, но

можно без этой ебли?

Я просто хочу пару примеров погонять, а не устраиваться в Wildberries.
Аноним 19/11/22 Суб 18:41:58 #39 №2517614 
>>2517597
Вот прочитал про GO111MODULE=off
Ну ладно, делаю это. Немного лучше поведение. Но пакетов все равно нет.

как тогда глобально поставить некоторые пакеты?
Аноним 19/11/22 Суб 18:42:23 #40 №2517615 
>>2517597

Можно использовать gopath. Но вообще go-модули - это и есть вариант без ебли + это единственный верный способ организации программ на го. Подход с gopath сейчас используется только в легаси
Аноним 19/11/22 Суб 18:43:53 #41 №2517616 
>>2517614
В чем проблема проинициализировать модуль и просто устанавливать зависимости, которые будут отображаться в файлике списком? В чем ебля-то?
Аноним 19/11/22 Суб 18:45:44 #42 №2517620 
>>2517614
Ладна, спасибо за нихуя.
вот что нужно делать :

export GO111MODULE=auto
go get github.com/google/бырбыр/мырмыр
go run хуйтика.go
Аноним 19/11/22 Суб 18:46:34 #43 №2517621 
>>2517616
это примеры из книжки за 2018.
Там все такое маленькое и простое.
Аноним 19/11/22 Суб 20:38:10 #44 №2517714 
>>2517319
>Сейчас уже не понимаю, зачем нужен условный сет/хип/кью в стд либе, при желании реализуется за 5 мин, а нужно раз в месяц.
То есть мне надо из проекта в проект таскать свой пакет с коллекциями, как диды которые с микрухой ебуться?
Аноним 19/11/22 Суб 20:53:25 #45 №2517728 
>>2517714
в рил ворлд проектах это не нужно. ну ладно раз в 3 месяца будет у вас новый сервис заводиться и с шансом 90% там даже очередь не нужна будет, а если ты будешь 2N в N оптимизировать затаскивая недефолтные коллекции тебя отхуесосят на ревью
Аноним 19/11/22 Суб 21:01:06 #46 №2517737 
>>2517728
>а если ты будешь 2N в N оптимизировать затаскивая недефолтные коллекции тебя отхуесосят на ревью
Так разве го не для этого нужен, что бы байты быстро педалить?
Аноним 19/11/22 Суб 21:05:38 #47 №2517743 
>>2517714
В Go есть поддержка сторонних либ, ничего своего таскать не надо. Устанавливаешь готовую либу, где реализованы десятки коллекций на все случаи жизни, и можешь писать почти как на нормальном языке.
Аноним 19/11/22 Суб 22:41:44 #48 №2517799 
>>2517342
Так я тоже, лол. Но литкод это не сфера применения гошки.
Это наша проблема, что мы решаем литкод на гошке.
Аноним 19/11/22 Суб 22:50:14 #49 №2517805 
Каково это, быть Говнокодером?
Аноним 19/11/22 Суб 23:48:09 #50 №2517845 
>>2517805
Быть говнокодером? Не зря эти слова так похожи.
Аноним 20/11/22 Вск 20:32:43 #51 №2518830 
Хочу соорудить в максимально ненапряжном стиле сетевой эмулятор устройств.
Как это сделать на Go? Go я выбираю исключительно ради легковесности горутин и логики эмуляции.

Изображать я буду обмен по TCP. Но не неплохо бы еще SNMP.

Может быть docker-драйвер слабать?
Или TAP-устройство?

Какие библиотеки или полуготовые проекты посмотреть?

Я смотреть google gvisor - оче сложно для меня и ничего не готово.
Я смотрел google packet - там нет tcp-стека полностью. Можно только пассивно наблюдать за трафиковм
Аноним 21/11/22 Пнд 13:23:40 #52 №2519292 
Вкатился в этот ваш го.
Расскажите как вы живете без перегрузки методов?
про хуевую обработку ошибок и только недавно добавленные дженерики промолчу...
Аноним 21/11/22 Пнд 13:26:23 #53 №2519295 
>>2519292
Пишем типы в названиях функций.
Аноним 21/11/22 Пнд 13:30:24 #54 №2519297 
>>2519292
Дженерики лучше чем в жабе, кстати.
Аноним 21/11/22 Пнд 13:31:13 #55 №2519300 
>>2519292
>только недавно добавленные дженерики
Так вроде сам езыг только недавно добавился, не?
Аноним 21/11/22 Пнд 23:13:36 #56 №2519896 
>>2519292
про этот пережиток плюсов раза два вспоминал за 3 года, несмотря на это всеми силами стараюсь не отчаиваться
Аноним 23/11/22 Срд 00:26:25 #57 №2521066 
Соратники, а как вы свои микросервисы в докер заворачиваете? Билдите внутри контейнера или же локально у себя сбилдили и закидываете в контейнер только лишь бинарник? с 1 стороны можно прямо маленькие образы делать( но у меня какая-то хуйня
exec /app/main: exec format error), подозреваю надо билдить как-то по хитрому, это при попытке закинуть в контейнер бинарник сбилженный под макос(юникс)
Аноним 23/11/22 Срд 00:35:43 #58 №2521069 
>>2521066
Билдить, очевидно, нужно в докере. Но всем лень.
Желательно использовать multistage build.
Аноним 23/11/22 Срд 00:38:21 #59 №2521071 
>>2513158
>скрипт
хуипт, долбоёбина
Аноним 23/11/22 Срд 00:38:46 #60 №2521072 
>>2521066
Ты случайно не на макбуке m1 собрал образ и пошел на интеле запускать?
Аноним 23/11/22 Срд 01:46:52 #61 №2521106 
изображение.png
> В обязательном порядке проходим Go Tour: https://tour.golang.org/welcome/1 (есть на Русском)

я конечно знаю ангельский, но немного НЕПРИЯТНА
Аноним 23/11/22 Срд 11:36:56 #62 №2521275 
>>2521072
Все на интеле, ну в будущем возможно и до этого дойдет, все таки мой мак - ветеран

>>2521069
Место много занимает если билдить в докере, у меня 300-400 мб контейнер весит
Аноним 23/11/22 Срд 11:40:09 #63 №2521276 
>>2521106
Охуеть, даже на польском есть версия, хотя в Польше вакансии не для сильных мидлов-сениоров просто нет. Зачем они делали ее я не знаю
капчю из Польски
Аноним 23/11/22 Срд 11:43:03 #64 №2521278 
>>2521275
ты не прочитал до слов multistage build.
Аноним 23/11/22 Срд 11:48:36 #65 №2521281 
>>2521278
https://fabianlee.org/2020/01/26/golang-using-multi-stage-builds-to-create-clean-docker-images/

Типа того ?
Аноним 23/11/22 Срд 12:00:49 #66 №2521288 
>>2521281
блядь.
где еще можно найти документацию на docker кроме как на сайте docker.com ?
https://docs.docker.com/build/building/multi-stage/

Ей богу, как дети..
Аноним 23/11/22 Срд 14:35:00 #67 №2521436 
>>2510725 (OP)
Почему у вас считается нормальным импорт модулей для сайд эффектов? Читаю доку по gRPC, что бы подключить сжатие на стороне сервера нужно импортировать gzip и никуда не указавать его дальше. Хотя бы при инициализации сервера через опции можно было бы сделать.
Аноним 23/11/22 Срд 19:20:58 #68 №2521632 
>>2521436
мы все против такого
Аноним 24/11/22 Чтв 17:40:44 #69 №2522305 
изображение.png
Почему функция с дженериком any не хочет возвращать строку? да она в принципе нихуя не хочет возвращать
Any это же алиас для пустого интерфейса
Аноним 24/11/22 Чтв 17:57:53 #70 №2522331 
>>2522305
Ты должен вернуть тот же тип что будет указан в дженерике, но ты возвращаешь string. Прдеставь что у тебя тип дженерика будет int как туда можно впихнуть в строку?
any означает что тип дженерика может быть любым, а не то что он возвращает любой тип
Аноним 24/11/22 Чтв 18:03:36 #71 №2522339 
>>2522331
понял
но не понял как мне к примеру стринг привести к типу Т
Аноним 24/11/22 Чтв 18:09:58 #72 №2522343 
изображение.png
>>2522339
В твоем примере никак, а так тебе нужно сделать интерфейс в котором есть метод который возвращает string
Вот хорошая статья на эту тему https://habr.com/ru/company/karuna/blog/552944/
Аноним 24/11/22 Чтв 22:45:30 #73 №2522541 
>>2514226
А как вышка помогает при устройстве?
Аноним 25/11/22 Птн 00:48:38 #74 №2522586 
>>2522541
забей это вышкошиз
Аноним 25/11/22 Птн 01:19:19 #75 №2522599 
>>2522586
вышка вообще хоть зачем то нужна?
Аноним 25/11/22 Птн 01:28:22 #76 №2522602 
>>2522599
для релокейта за границу наверн
Аноним 26/11/22 Суб 00:13:48 #77 №2523418 
>>2510725 (OP)
Как на Go написать identity function? Это функция, которая возвращает свой аргумент. При чем аргументом может быть любой тип, в том числе функция. На JS это выглядит так

const identity = (x) => x;

Типизация Go требует указания типов аргумента и возвращаемого значения. Есть какие то хаки чтобы это обойти, чтобы функция принимала аргумент любого типа и возвращала его?
Аноним 26/11/22 Суб 00:43:04 #78 №2523430 
>>2523418
https://go.dev/play/p/6nMP5FulQ4P
Аноним 26/11/22 Суб 00:56:25 #79 №2523442 
>>2523430
Спасибо за пример. Только не понял зачем 2 функции, identity и identity_interface? Как это называется T, чтобы почитать? Гуглится плохо. Я пока нуб в Go, хотел только понять как можно добиться параметрического полиморфизма.
Аноним 26/11/22 Суб 00:57:24 #80 №2523444 
>>2523442
Одна функция через дженерики, другая через интерфейс, T в квадратных скобках это дженерик
Аноним 26/11/22 Суб 00:58:06 #81 №2523445 
>>2523430
И identity и identity_interface могут принимать например функцию square. Так зачем их две, в чем разница?
Аноним 26/11/22 Суб 00:58:34 #82 №2523446 
>>2523444
Понял. Спасибо еще раз!
Аноним 26/11/22 Суб 04:04:05 #83 №2523489 
>>2523430
Вариант с интерфейсом более верный, потому что дженерик порождает разные функции на каждый тип
Аноним 26/11/22 Суб 08:59:37 #84 №2523534 
Господа двачеры-прогроммачеры, need help.

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

Создал две структуры и две функции. Соответственно функцию main и другую, функцию, которая выполняет запись в строку, при выполнении определённых действий.

В функции main задал ключи-значения структурам.

Собственно две проблемы:
1) Вне функции main я не могу использовать WriteStting(), гугул говорит, что это из-за того, что WriteString() работает в функции, которая имеет права записи. Как дать права записи второй функции?
2) Если нельзя сделать первое, то как мне передать из одной локальной переменной значение в переменную, которая находится в другой функции?
Аноним 26/11/22 Суб 09:28:47 #85 №2523541 
>>2510725 (OP)
Где почитать про ебучую T? Что это такое вообще? Не гуглится в доках.
Аноним 26/11/22 Суб 09:30:35 #86 №2523542 
>>2523489
Лучше по производительности? Где такие нюансы можно изучить? Читать доки или есть какие то другие ресурсы?
Аноним 26/11/22 Суб 09:32:38 #87 №2523544 
>>2523534
Гадалок в треде нет. Код выложи в Playground.
Аноним 26/11/22 Суб 12:58:45 #88 №2523727 
>>2523541
ты про дженерики как я понял
Аноним 26/11/22 Суб 13:42:03 #89 №2523757 
>>2523544
https://go.dev/play/p/y5uzLWOpCXu
Аноним 26/11/22 Суб 13:43:41 #90 №2523759 
>>2523727
>ты про дженерики как я понял
Ну похоже это про дженерики. Только почему нигде нет описание что это есть? Это тип данных или что это?
Аноним 26/11/22 Суб 13:50:41 #91 №2523766 
>>2523430
Что за тип T? Уже пальцы стер пытаясь нагуглить что он значит.
Аноним 26/11/22 Суб 13:59:21 #92 №2523772 
>>2523766
Базовый тип, от которого наследуются все остальные.
Аноним 26/11/22 Суб 15:07:10 #93 №2523821 
>>2523772
>Базовый тип, от которого наследуются все остальные.
Где нибудь об этом пишут? Дай пожалуйста ссылку, а то выебся искать. Не гуглится T, не гуглится базовый тип. Где ты об этом читал?
Аноним 26/11/22 Суб 15:31:44 #94 №2523839 
>>2523821
>>2523759
"дженерики golang" 1 ссылка в гугле
Аноним 26/11/22 Суб 16:35:51 #95 №2523910 
>>2517172
> Почему не сделали конструкторы
чтобы не возникало вопросов как из конструктора вернуть ошибку
Аноним 26/11/22 Суб 16:37:48 #96 №2523914 
>>2523910
Надо запилить конструкторы. Тогда разрабы Go будут вынуждены добавить исключения.
Аноним 26/11/22 Суб 18:33:03 #97 №2524077 
>>2523772
доброе утро, сэры
Аноним 26/11/22 Суб 20:47:42 #98 №2524211 
>>2510725 (OP)
Аноны, опишите свою работу. Чем вы конкретно занимаетесь на работе (понятным языком). С какими проблемами сталкиваетесь? И КАКИЕ ТЕХНОЛОГИИ ВЫ ПОСТОЯННО ИСПОЛЬЗУЕТЕ?
Аноним 26/11/22 Суб 21:20:59 #99 №2524251 
image.png
>>2524211
жсономешалка мешает жсон
Аноним 26/11/22 Суб 22:16:10 #100 №2524293 
>>2523772
>Базовый тип, от которого наследуются все остальные
>>2523839
>"дженерики golang" 1 ссылка в гугле
По этой ссылке про T почти ничего нет. Ни слова про то, что это некий базовый тип. Что за ебанутый язык, почему нет внятного полного описания этой хуйни?
Аноним 26/11/22 Суб 22:25:31 #101 №2524298 
>>2524251
Нубля, онон. Расскажи за свою профу на местах? Я могу конечно ютуб открыть и глянуть там прогеров, но меня интересуют такие же двачеры.
Аноним 26/11/22 Суб 22:32:24 #102 №2524301 
>>2524293
Это просто букова, буковы любые можно ставить, хоть T, хоть K, хоть Ѫ, все работать будет
Аноним 26/11/22 Суб 22:33:33 #103 №2524303 
>>2524293
да просто вопрос уровня "где можно прочитать что такое x в математике?"
T это тупа принятое название для первого/единственного типа-параметра. пост про "базовый тип" это шутка про джаву (я надеюсь). если тебе нужно внятное описание, то можешь спек читать https://go.dev/ref/spec#Type_parameter_declarations всё остальное, включая сами сорсы гошки, это просто пережеванный разными людьми и выплюнутый в определенной физической форме спек
Аноним 26/11/22 Суб 22:42:30 #104 №2524305 
>>2524303
Ну наконец внятный ответ. Только я не догнал, как буквенный идентификатор выступает в качестве типа возвращаемого значения? Спасибо
Аноним 26/11/22 Суб 22:58:56 #105 №2524310 
>>2524305
в гошке это и так можно было сделать, например объявить произвольный алиас для типа type T = int и возвращать T вместо int.
чисто синтактически типы-параметры примерно похоже себя ведут. если на пальцах об асфальт, то можешь это рассматривать как алиас в скоупе функции, но конкретный тип, который алиасится, определяется при инстанциации.
Аноним 26/11/22 Суб 23:04:45 #106 №2524311 
image.png
>>2524310
я к тому, что вот это всё ведет себя одинаково
Аноним 26/11/22 Суб 23:11:56 #107 №2524319 
>>2524310
>type T = int
Можно объявлять пользовательские типы? Так type all = any можно?
Аноним 26/11/22 Суб 23:22:18 #108 №2524323 
>>2524319
>Можно объявлять пользовательские типы?
да, в го можно объявлять пользовательские типы. это выгодно отличает го от языков, где это нельзя делать
>Так type all = any можно
да
Аноним 27/11/22 Вск 00:04:58 #109 №2524348 
>>2524323
Отлично, вот уже Go не кажется таким уж плохим. Спасибо.
Аноним 27/11/22 Вск 00:11:41 #110 №2524351 
>>2524348
Хуйня, а не язык. Даже на православном JS можно ML пилить, а это какое-то кустарное поделие для узких задач.
Аноним 27/11/22 Вск 00:28:05 #111 №2524356 
>>2524351
>можно ML пилить
ML - это язык программирования. Родоначальник целого семейства языков и множества фич. Python своим синтаксисом обязан языку ML. Поэтому пиши Machine Learning.

>Даже на православном JS можно ML пилить
И как это вообще относится к языку? Можно подумать JS поддерживает machine learning из stdlib. Запилят либы для Go и на нем можно будет юзать machine learning.

>это какое-то кустарное поделие для узких задач
Не кустарнее JS и PHP, но да, для узких задач, сети и конкурентность.
Аноним 27/11/22 Вск 00:35:54 #112 №2524359 
>>2524298
>>2524211
>Чем вы конкретно занимаетесь на работе (понятным языком)
микросервисы... ну грубо говоря есть два вида задач - технические и продуктовые.
продуктовые это уровня
- есть шина данных (например какой-то топик в kafka или NATS) и сервис, который умеет отправлять пуши пользователям. нужно запилить сервис, который будет слушать шину и при получении определенных событий ходить в rpc ручку сервиса пушей, чтобы отправить эти пуши. а еще нужно запилить дедупликацию с БД/редисом, чтобы одинаковый пуш дважды не отправить. плюс возможно после получения события надо сначала идти в какие-то другие сервисы, чтобы взять нужную инфу для пуша.
- или нужно начать отдавать какие-то данные на фронт, т.к. мы хотим пользователям больше инфы показывать, например граф движения посылки. для этого нужно в сервис с апишкой допилить поход в сервис статусов за этой инфой.
- или так как у нас SSR, то всякие правки текстов тоже на бэкендеров падают.
и технические задачи - это уровня оптимизировать запрос в БД или запилить новую ручку для Х, которая возвращает меньше инфы, но работает быстрее, дергает более легкие ручки других сервисов или вообще не дергает, и переключить потребителей на неё, чтобы подготовиться к росту нагрузки на следующие полгода.
вместе со этим нужно мониторить и дежурить по сервисам своей команды.
>С какими проблемами сталкиваетесь?
- нужно получить данные из другого сервиса, но он не может выдержать нагрузку, которая планируется. там ручка не батчовая/нихуя не оптимизирована/гоняет сложный запрос в БД
- другая команда начала ходить в наш сервис со сложными фильтрами, и наша БД сдохла из-за отсутствия нужного индекса для такого фильтра
- нужно сделать фичу в сервисе другой команды. приходится в их код погружаться и договариваться о том, как ты это сделаешь
- нужно сделать фичу, которая требует еще нетривиальных правок на фронте, а в команде нет фронтендеров
>И КАКИЕ ТЕХНОЛОГИИ ВЫ ПОСТОЯННО ИСПОЛЬЗУЕТЕ?
инструменты - вскод, golangci-lint, gofumpt, mockgen
платформа - docker, minikube. на всех моих работках как минимум CI был в докере.
ну и в каждом первом сервисе постгрес есть. иногда еще редис в добавок, или монга вместо пг.
и очевидно баш: ты делаешь новый сервис, пишешь юнит-тесты, мигрируешь нужные для старта данные в БД, примерно прикинул РТ и нагрузку, но у тебя нихуя нет пруфов по приблизительным RT/SR, которые сервис будет реально выдавать. с башем можно тупо за 10 минут написать скрипт, который для каждой реальной строчки из БД дернет твою ручку, чтобы хоть какую-нибудь статистику собрать и понять насколько ты обосрался
Аноним 27/11/22 Вск 08:23:08 #113 №2524560 
>>2510725 (OP)
Сап, goвнач.
Работаю с голангом полгода на проде.
У нас типо хайлоад и микросервисы, всё деплоится в AWS через docker-compose. Довольно большое и запутанное приложение, но дёргается через POST метод и там дохуища логики внутри.
Есть ещё приложение на гошке, там всего три эндпоинта, которые лезут в другую базу и возвращают результат для мобильного API, написано с GORM, по-сути, там простые круды.

Ну и в чём вопрос. А нормальные компании как испрользуют голанг? Что сейчас вообще делают на гошке? Мне кажется, наши ебантяи неправильно используют говноланг.
Аноним 27/11/22 Вск 08:27:06 #114 №2524562 
>>2524560
Почему я спрашиваю? Да меня подзаебал проект, я бы куда-нибудь перешёл и уволился. Но не знаю чем сейчас go живёт, что на нём востребовано. Зарплата очень низкая, на любом другом языке в разы больше платят
Аноним 27/11/22 Вск 09:37:06 #115 №2524585 
Аноны, расскажите про преобразование типов?

Вот есть
> var symbol int32 = 'c'
> fmt.Println(string(symbol))

Значит symbol преобразовывается:
'c' as int32 -> 99 as int32 -> string(99 as int32) -> 'c'
?
Тупой вопрос, но я правильно понимаю что на вход в string подается два значения - число и его тип? А далее так как это метод строки - он выдает строку изходя из своих таблиц?
Аноним 27/11/22 Вск 09:50:32 #116 №2524589 
>>2524585
У тебя string() преобразовал в тип данных без изменения содержимого памяти

юзай strconv.Itoa(i)
Аноним 27/11/22 Вск 10:39:10 #117 №2524623 
>>2524356
>ML - это язык программирования. Родоначальник целого семейства языков и множества фич. Python своим синтаксисом обязан языку ML. Поэтому пиши Machine Learning.
Я его прекрасно понял, контекста достаточно. Выражение "делать ML" уже стопроцентно говорит, что речь не о ЯП.
Аноним 27/11/22 Вск 10:44:56 #118 №2524626 
>>2524562
>Зарплата очень низкая, на любом другом языке в разы больше платят
Да ну нахуй, статистика говорит об обратном.

мимо
Аноним 27/11/22 Вск 11:19:00 #119 №2524639 
>>2524626
Знакомые программисты на python сходу на 200 и 250к устроились.
Аноним 27/11/22 Вск 12:21:30 #120 №2524659 
>>2524639
>Знакомые программисты
>сводная статистика по зарплатам из вакансий
Аноним 27/11/22 Вск 12:22:16 #121 №2524660 
>>2524659
Так а у тебя какая сводная статистика по зарплатам из вакансий?
Аноним 27/11/22 Вск 12:23:48 #122 №2524662 
6153cd14043325fd78ad7db9eca86411.png
>>2524660
Аноним 27/11/22 Вск 12:28:44 #123 №2524667 
>>2524662
>205k golang

В голосянду. Я же говорю, хуёвая зарплата.
Аноним 27/11/22 Вск 12:29:19 #124 №2524669 
Норм зарплата это от 250к минимум. А если в Москве, то 300к
Аноним 27/11/22 Вск 13:26:02 #125 №2524724 
>>2524669
>>2524667
Я за 35к го стажером работаю. Ебало мое имаджинировали?
Аноним 27/11/22 Вск 14:04:16 #126 №2524753 
image.png
>>2524585
>на вход в string подается два значения - число и его тип
когда компилятор видит, что ты передаешь rune в string(), он впихивает конверсию к utf-8 репрезентации.
>А далее так как это метод строки - он выдает строку изходя из своих таблиц
но тут нет ни одного вызова метода. и у строк методов никаких нет
Аноним 27/11/22 Вск 14:24:53 #127 №2524772 
>>2524667
>140 питон
Аноним 27/11/22 Вск 15:04:54 #128 №2524803 
>>2524772
Это чушь. JS и Python - лучшие языки, чтобы заработать первый миллион. А по голангу почти нет вакансий
Аноним 27/11/22 Вск 15:11:18 #129 №2524804 
А как vscode настроить чтобы он мог запускать маленькие примерчики без создания go.mod ?

Не пойму откуда он мой последний launch.json запоминает . Он просто совсем в другом каталоге валяется
Аноним 27/11/22 Вск 15:13:42 #130 №2524806 
>>2524804
точнее, я хочу не просто go run, а отлаживать в отладчике эти примерчики
Аноним 27/11/22 Вск 15:14:32 #131 №2524807 
image.png
Можно ли сделать что-то подобное, записать от range итератор?
Аноним 27/11/22 Вск 15:15:16 #132 №2524809 
>>2524806
У меня vscode автоматом позволяет дебажить через Run code
Аноним 27/11/22 Вск 15:17:36 #133 №2524811 
>>2524662
Такая хуйня нерепрезентабельна, нужно показывать облачко с количеством вакух и количество опыта. На говяхе джунов и недомидлов практически нет, как и на элексире.
Аноним 27/11/22 Вск 15:18:16 #134 №2524813 
>>2524809
так ты создал go.mod или нет?
Это реально пачка файлов с package main, где все имена пересекаются (то есть, наиболее удобный способ поиграться с мелкими примерами) ?
Аноним 27/11/22 Вск 15:31:17 #135 №2524816 
>>2524811
Всё так, новые проекты на говне больше не пишут. В России и подавно
Аноним 27/11/22 Вск 15:48:16 #136 №2524826 
>>2524804
создаешь лонч.жсон, ставишь курсор в configurations и нажимаешь контролспейс и Launch file даже в подсказках есть

{
"version": "0.2.0",
"configurations": [
{
"name": "Launch file",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${file}"
}
]
}

файлики так

.vscode/launch.json
1.go
2.go
go.mod
Аноним 27/11/22 Вск 15:52:38 #137 №2524830 
image.png
>>2524807
Аноним 27/11/22 Вск 16:01:38 #138 №2524840 
>>2524826
так, вроде я разобрался:
launch.json действительно позволяет отлаживать без хуйни.
но вот go.mod ты зря создал. зря.
Аноним 27/11/22 Вск 16:04:21 #139 №2524847 
изображение.png
>>2524251
ДЖСОНОМЕШАЛКА МЕШАЕТ ДЖСОН
@
БРИГАДА РАЗРАБОВ ЖРЁТ САМОГОН
@
ТИМЛИД ОЛОЛОЕВ В ДОСКУ ПЬЯН
@
НАПЕЧАТАЛ ОН DROP DATABASE
@
ФРОНТЕНДЕР СТЕПАН ENTER НАЖАЛ
@
НАХУЙ ВЕСЬ ПРОД ПОТЁРЛИ РАЗОМ
@
БРИГАДА РАЗРАБОВ ЖРЁТ САМОГОН
@
В ДЖСОНОМЕШАЛКЕ КРОВАВЫЙ РАСТВОР
@
ТЕСТО С МЯСОМ ХОРОШО
@
ЗДЕСЬ УЖЕ ПЕРЕМЕШАЛОСЬ
@
ЭТИ ВКУСНЫМ ПИРОГОМ
@
ВСЕ КЛИЕНТЫ ОБЪЕДАЛИСЬ
@
ДЖСОНОМЕШАЛКА - АЛКОГОЛИЗМ
@
ДЖСОНОМЕШАЛКА - КАНИБАЛИЗМ
Аноним 27/11/22 Вск 16:04:46 #140 №2524848 
>>2524847
Но ведь джейсономешалка у гошки не самая лучшая. особенно с Indent
Аноним 27/11/22 Вск 16:50:03 #141 №2524901 
>>2524803
Это реальность. Медианная зп на питоне в рф равна 140 тысяч рублей.
>А по голангу почти нет вакансий
Как и конкурентов. В питоне соотношение вакансии/конкуренты гораздо хуже (у питона оно в принципе самое хуёвое, хуже может быть разве что у жс). Ты откуда вылез вообще, я не верю что человек хоть какое-то отношение к рынку айти имеющий может такую дичь писать.
Аноним 27/11/22 Вск 17:21:58 #142 №2524941 
>>2524901
>Ты откуда вылез вообще
Я два года писал на Python, потом три года на JS, сейчас вот полгода на golang работаю в коммерческой компании.
По инсайду, golang уже мёртв и нет смысла продолжать его учить
Аноним 27/11/22 Вск 17:29:49 #143 №2524952 
>>2524941
>golang уже мёртв
От создателей PHP/Ruby/etc умер.
Аноним 27/11/22 Вск 17:30:44 #144 №2524955 
>>2524952
Так-то PHP намного живее и вакансий по нему много.
А golang это признак легаси проекта.
Аноним 27/11/22 Вск 17:31:16 #145 №2524957 
>>2524941
>По инсайду, golang уже мёртв и нет смысла продолжать его учить
Как ruby или еще не так сильно умер?
Аноним 27/11/22 Вск 17:33:06 #146 №2524961 
>>2524957
Ruby это чисто американская фишка, и он вполне ещё живой.
А golang это хайповый высер google, который нигде, кроме google и не нужен. Всё, что я читаю о "популярности голанга" это мирф от инфоцыганов. По скорости golang уступает даже C#.
Прумиронк.
Аноним 27/11/22 Вск 18:25:43 #147 №2525009 
>>2524961
То есть руби живее го?
Аноним 27/11/22 Вск 18:34:06 #148 №2525020 
>>2525009
Однозначно. И зарплаты на руби выше. Голанг это бесполезная игрушка
Аноним 27/11/22 Вск 20:02:45 #149 №2525096 
>>2524955
>А golang это признак легаси проекта.
>АБЫРВАЛГ!
Аноним 27/11/22 Вск 20:13:01 #150 №2525105 
>>2524941
>>2524961
>>2525020
Толсто. Go и Ruby не отличаются по зарплате. А вакансий для Go в РФ больше в 3 раза. И Go не игрушка, а промышленный язык программирования. Пошел бы ты играть в свою песочницу.

https://survey.stackoverflow.co/2022/
Аноним 27/11/22 Вск 20:13:59 #151 №2525106 
>>2525105
Да это тролль из мвп загона вылез
Аноним 27/11/22 Вск 20:30:39 #152 №2525125 
>>2524961
>По скорости golang уступает даже C#
fasthttp довольно быстрый.
Кстати говоря, techempower тесты для шарпа оказались хитрой подделкой, а не тестами фреймворка, поэтому тот факт, что asp.net входит в топ-10 по производительности, оказался не более чем маркетинговым буллщитом
Аноним 27/11/22 Вск 20:50:25 #153 №2525152 
>>2524961
я думаю тут каждый делает вывод для себя сам хочет ли он писать на шарпе в ланите или на гошке в озоне.
Аноним 27/11/22 Вск 21:11:57 #154 №2525167 
>>2525106
Возможно даже лахта серит
Аноним 27/11/22 Вск 22:19:57 #155 №2525207 
>>2524941
Верим.
Аноним 27/11/22 Вск 23:33:27 #156 №2525248 
>>2524941
>и нет смысла продолжать его учить
ок
мимо вкатился на зп 110к неделю назад
Аноним 28/11/22 Пнд 09:37:27 #157 №2525395 
>>2525152
я думаю тут каждый делает вывод для себя сам хочет ли он писать на шарпе в тинькофф или на гошке в вайлдберис (:
Аноним 28/11/22 Пнд 13:26:05 #158 №2525525 
>>2525395
в тинькофф пишут на го) в вб куча легаси на шарпе) делай выводы чмоха
Аноним 28/11/22 Пнд 13:49:00 #159 №2525538 
>тинек
>вайлдбериз
Вы тут корпоративными рабами хотите стать? Сильнее сотрудников в жопу ябут только в каком нибудь сималенде
Аноним 28/11/22 Пнд 14:35:25 #160 №2525606 
1610965149150789142.jpg
>>2525538
А государь должон быть строг!
А иначе с нами нельзя!
БОЛЬШЕ ВЕШАТЬ!!
Аноним 28/11/22 Пнд 19:34:13 #161 №2525899 
>>2525606
Это тим лид такое себе позволяет? Почему еще не отпиздили? Накинули бы на него покрывало и повыбивали бы дурь.
Аноним 28/11/22 Пнд 22:39:47 #162 №2526021 
>>2525395
Тинек больше про скалу+джаву. Но гошка там тоже есть. И шарп тоже.
Аноним 29/11/22 Втр 13:16:49 #163 №2526342 
В PHPStorm если функция бросает исключение, она будет подсвечена. Можно ли добиться того же для panic в go? Как вы вообще определяете свалится ли библиотечная функция в панику? Просто ищете по исходниакм?
Аноним 29/11/22 Втр 16:58:12 #164 №2526604 
>>2526342
Схуяли оно должно в панику упадать?
Нормальные либы err возвращают
Аноним 29/11/22 Втр 17:38:44 #165 №2526633 
>>2526604
>>Нормальные либы err возвращают
ну значит стандартная библиотека у гошки гавно
Аноним 29/11/22 Втр 17:39:01 #166 №2526634 
>>2526633
>го это гавно
ну это база
Аноним 29/11/22 Втр 18:12:14 #167 №2526671 
Скиньте, плизки, отладочный Dockerfile где есть отладчик delve и CGO_ENABLED=1 !?

что-то нихуя не работает с этими либами на Си.
В обычном случае все хорошо. И вроде из vscode проект работает.

devcontaiers не использую - очень сложна там наверчено все. У меня тут просто свои приколюхи с root и libpcap
Аноним 03/12/22 Суб 12:27:25 #168 №2529595 
> Последний пост от 29/11/22
golang умер даже на дваче.
Аноним 03/12/22 Суб 13:21:12 #169 №2529637 
>>2529595
Посмотри сколько они в телеграм чате насирают, охуеешь
Аноним 03/12/22 Суб 16:28:35 #170 №2529806 
>>2529637
Так там социоблядство к языку не имеющее никакого отношения
Аноним 03/12/22 Суб 16:41:45 #171 №2529817 
>>2529637
Закономерно, разрабы на зумерском языке в основном социобляди и на токсичном дваче им не уютно. Страшно представить, что в чатах по JS и петухону происходит, раз они даже здесь срут 100500 постов в день.
Аноним 03/12/22 Суб 16:46:10 #172 №2529825 
>>2529817
На токсичном дваче неуютно из-за лахтоботов, модерации от сотрудников псевдочастной компании VK и товарищей майоров, которые захаживают и в тематику
Аноним 03/12/22 Суб 17:17:56 #173 №2529838 
>>2529825
РФ уже объявило тотальную войну голенгу и физически истребляет последователей?
Аноним 03/12/22 Суб 17:29:05 #174 №2529846 
>>2529817
Там филиал двача
Аноним 04/12/22 Вск 15:56:37 #175 №2530591 
>>2510725 (OP)
Gin, Echo или Fiber?
Еле ну его нахуй? Голанг же не про фреймворки
Аноним 04/12/22 Вск 23:10:19 #176 №2531017 
>>2530591
Голанг про самописные фреймворки.
Аноним 05/12/22 Пнд 07:36:15 #177 №2531173 
>>2530591
юзаем на проде Echo, полёт нормальнй
Аноним 05/12/22 Пнд 08:28:34 #178 №2531177 
>>2531017
А как ты напишешь фреймворк на голанге, если не поработал 5 лет с аналогами?
Аноним 05/12/22 Пнд 08:49:39 #179 №2531196 
>>2531177
Не поработал с аналогами? Это как вообще? Путь разработки на Go такой: вкатываешься в другой язык, дорастаешь там до миддла, учишь синтаксис Go и вкатываешься, если обнаружил местный велосипедный фреймворк, используешь его, иначе пишешь свой.
Аноним 05/12/22 Пнд 08:55:44 #180 №2531200 
>>2531196
Да, я почти синиор на своём родном языке. Боюсь вкатываться к go, потому что жёсткие собесы и не выше 120к
Аноним 05/12/22 Пнд 19:12:29 #181 №2531906 
Решил я потыкать ваш язык, и чет уже охуеваю.
Есть у меня один микросервис на ноде, который кафку читает, решил я его переписать на го по приколу. Кафка защищена сертами. Переношу рабочие серты в pem формате и ловлю ошибку.

certificate, err := tls.X509KeyPair([]byte(certPEM), []byte(keyPEM))

tls: failed to parse private key

Что не так с этой хуйней?
Аноним 05/12/22 Пнд 19:30:52 #182 №2531933 
>>2531906
Ничего не знаю, мы тесты написали и тесты проходят.
попробуй тут примеры взять и понять чем твой код отличается от эталонного
https://github.com/golang/go/blob/master/src/crypto/tls/tls_test.go
Аноним 05/12/22 Пнд 19:53:46 #183 №2531970 
>>2531933
Дядя, я скопировал base64 с тем же самым рабочим ключом, раскодировал в байты и сунул в tls. Код ничем не отличается.

Единственное, ключ начинается вот так:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: BLA-BLA,228E5FE1488BCC00

0g154X8u8c2c2a8b3A22....



А ключи в примерах Proc-Type и DEK-info не содержат. ЧЗХ?
Аноним 05/12/22 Пнд 21:53:55 #184 №2532094 
>>2531906
хз. с дебагером пройдись
Аноним 05/12/22 Пнд 22:41:16 #185 №2532161 
https://play.golang.com/p/TQK7ooUbs3q

Объясните пожалуйста, почему последний элемент никогда не читается горутиной?
Знаю, что это всратое использование каналов, я в данном примере просто надрачиваюсь.
Аноним 05/12/22 Пнд 23:13:40 #186 №2532211 
>>2532161
close вынеси из горутины чтобы точно исполнилось перед for
Аноним 05/12/22 Пнд 23:16:11 #187 №2532215 
>>2532211
Уже разобрался. close тут не при чем, до него даже не доходит. Главная горутина завершает работу сразу после помещения последнего элемента в канал - логично, что программа закрывается и дочерняя горутина не успевает.
Аноним 06/12/22 Втр 01:57:37 #188 №2532358 
>>2532215
>после помещения последнего элемента в канал
после вычитки последнего элемента
Аноним 06/12/22 Втр 08:12:24 #189 №2532444 
Как лучше всего парсить аргументы?
Аноним 06/12/22 Втр 09:16:48 #190 №2532469 
>>2532444
https://pkg.go.dev/flag
Аноним 06/12/22 Втр 09:31:57 #191 №2532480 
Как сделать, чтобы проверялось, что не указаны аргументы и выводить из-за этого все аргументы?
Аноним 06/12/22 Втр 09:52:07 #192 №2532488 
>>2532358
Почем вычиткиу? В главной горутине мы пишем в канал, а не читаем. Когда читать нечего, главная горутина завершает работу.
Аноним 06/12/22 Втр 13:10:11 #193 №2532591 
>>2532215
По-моему ты хуйню написал.
Но хотел написать примерно это :
https://play.golang.com/p/WuCAEpogAQQ

И close тут причем.
Аноним 06/12/22 Втр 15:05:44 #194 №2532712 
>>2532591
> По-моему ты хуйню написал.
Все так. Я только учу язык и специально в рамках изучения смотрел, что будет, если писать в канал из главной горутины.
А причем тут close конкретно в моем примере, я не понял. Если мы пишем в канал в дочерней горутине, то ясно, что без нее программа не завершится. Если говорить про изначальный пример, то он там не оказывает никакого влияния на работу если я правильно понимаю.
Аноним 06/12/22 Втр 16:35:26 #195 №2532838 
>>2532488
канал же без буфера. главная горутина блочится на отправке до того как придет читатель из канала. когда приходит читатель, значение копируется напрямую со стека отправляющей горутины в стек читающей. в сам канал значение не помещается.
Аноним 06/12/22 Втр 16:58:10 #196 №2532864 
>>2532480
взять ос.аргс и проверить длину
Аноним 06/12/22 Втр 18:28:42 #197 №2533008 
>>2532712
это и есть твой пример, написанный нормально
Аноним 06/12/22 Втр 19:08:42 #198 №2533056 
>>2532161
Я тут понял, что мне тоже следует разобраться с подобной же херней.

Есть простая утилита, которая должна останавливаться по ctrl-c или по юникс-сигналу.
Я делаю на все доступные каналы close, но потоки не всегда успевают корректно завершиться.

Прочитал на stack overflow, что все используют sync.Waitgroup.
Но это по-моему как-то некрасиво выглядит.

как следует спроектировать работу с каналами в моем случае?
Аноним 06/12/22 Втр 19:12:14 #199 №2533063 
https://www.geeksforgeeks.org/how-to-reverse-a-string-in-golang/
Надо прочитать строку задом наперед. Объясните 2 вариант решения, я не понимаю его.
Аноним 06/12/22 Втр 19:18:57 #200 №2533069 
>>2533063
Тебе принцип непонятен или код? Я не гошник, но, вроде, разобраться можно.
Аноним 06/12/22 Втр 19:52:41 #201 №2533116 
>>2533069
Все непонятно.
Аноним 06/12/22 Втр 19:53:53 #202 №2533118 
>>2533056
прочитал в книжке что ВСЕ используют sync.WaitGroup.

Ладно.
Аноним 06/12/22 Втр 20:13:06 #203 №2533130 
>>2533118
А все остальные используют x/sync/errgroup
Аноним 06/12/22 Втр 20:20:06 #204 №2533141 
>>2533116
Ну, код не расскажу, а принцип такой. Берётся вторая строка, сначала пустая, потом берём из первой строки по одной букве и добавляем СЛЕВА в первую строку.
Например строка "двач"
Берётся первая буква "д", добавляется слева к строке "", получается "д".
Берётся вторая буква "в", добавляется слева к строке "д", получается "вд".
Берётся третья буква "а", добавляется слева к строке "вд", получается "авд".
Берётся четвёртая буква "ч", добавляется слева к строке "авд", получается "чавд".

В общих чертах так.
Аноним 06/12/22 Втр 20:31:42 #205 №2533150 
>>2533141
Ебануться, то есть в этом языке не придумали split() reverse() и join()?

Вот такую хуету нужно будет писать каждый раз чтоб перевернуть строчку в реальном сервисе?
Аноним 06/12/22 Втр 20:38:07 #206 №2533155 
>>2533150
Ты у меня спрашиваешь? Я го не знаю, я тебе просто алгоритм объяснил, потому что ты сказал, что ты его не понял.
Я даже не знаю, про что статья по ссылке, я только код читал, может там как раз и описывается реализация reverse из их стандартной библиотеки или что-то такое.
Аноним 06/12/22 Втр 22:02:37 #207 №2533208 
>>2533008
>написанный нормально
там канал в читающей горутине до сих пор закрывается
Аноним 06/12/22 Втр 22:03:21 #208 №2533210 
image.png
>>2533208
невермайнд
Аноним 06/12/22 Втр 22:13:02 #209 №2533224 
>>2533150
а че там писать
https://go.dev/play/p/eAjyvTJQ1LK
Аноним 07/12/22 Срд 15:29:26 #210 №2533856 
bee14920161975971.jpg
>>2510725 (OP)
>Go является маяком стабильности
Напомните сколько времени прошло после того как после неотключаемой сборки мусора которая фризила бэкенде и все разрабы послали нахуй это язык прошло времени прежде чем разрабы языка очухались и сделали её отключаемой?
Аноним 07/12/22 Срд 16:17:49 #211 №2533914 
Не могу придумать простой способ выявить в автоматическом тесте ситуацию когда функция не отправила ничего в канал.

Мне что, писать тест с unbuffered channels ?
Аноним 07/12/22 Срд 16:46:10 #212 №2533946 
image.png
>>2533914
Аноним 07/12/22 Срд 16:51:32 #213 №2533947 
>>2533946
да, спасибо.
Но это не скрытый пример. Это на stackoverflow есть.

Эта нейронка ведь не сама продуцирует, а гуглит?
Аноним 07/12/22 Срд 16:54:02 #214 №2533949 
>>2533947
нейронка дохера чего умеет. Даже юнит-тесты писать
Аноним 07/12/22 Срд 16:54:14 #215 №2533950 
>>2533946
строго говоря, код НЕ простой.
Я думал в пакете testing есть какие-нибудь хуитки для детекта дедлоков и тд.

Проблема в том, что юнит-тесты, кажется, сосредоточены на логике предметной области, а все вопросы обеспечивает фреймворк.

Тестировать сами каналы и отвечают ли вовремя функции никому не надо.
Аноним 07/12/22 Срд 16:55:04 #216 №2533952 
>>2533949
ну пусть напишет то, чего нет.

Вот этот код надо было найти ей https://stackoverflow.com/questions/24929790/how-to-set-the-go-timeout-flag-on-go-test
Аноним 07/12/22 Срд 17:40:35 #217 №2534026 
>>2533914
ну по классике это
select {
case <-c:
case <-time.After(testTimeout):
t.Fatal()
}
Аноним 07/12/22 Срд 19:28:39 #218 №2534267 
image.png
>>2510725 (OP)
>постоянно обновляется сообществом
ебало?
Аноним 07/12/22 Срд 19:52:57 #219 №2534303 
image.png
>>2534267
Пох на дебичей, которую всякую хуйню просят
Аноним 07/12/22 Срд 19:54:08 #220 №2534305 
>>2534267
https://github.com/kamranahmedse/developer-roadmap
Вот родмапы свежие
https://roadmap.sh/golang
Но нах они нужны?
Аноним 07/12/22 Срд 20:06:11 #221 №2534328 
>>2534305
а вдруг ты забудеш выучить что такое for луп и что делать тогда будешь???
Аноним 08/12/22 Чтв 02:42:45 #222 №2534653 
>>2533946
что за сайт?
Аноним 08/12/22 Чтв 07:11:43 #223 №2534712 
>>2534653
Тебя даже вчерашний шторм не разбудил!
https://chat.openai.com/chat
Аноним 08/12/22 Чтв 07:12:34 #224 №2534713 
>>2534328
>и что делать тогда будешь???
Спрошу у Deus Ex Machina.
Аноним 08/12/22 Чтв 11:05:24 #225 №2534805 
>>2534712
Как в этой херне русаку зарегестрироваться?
Аноним 08/12/22 Чтв 11:11:45 #226 №2534812 
>>2534805
Виртуальный фейковый телефон похоже только прокатит.
Аноним 08/12/22 Чтв 14:56:28 #227 №2535153 
>>2534812
Не прокатит

>>2534805
Хуй знает, без реального номера никак
Аноним 08/12/22 Чтв 15:45:00 #228 №2535221 
У меня возникло ощущение, что местные дженерик функции это какие-то макросы. С ними нельзя ничего сделать кроме как указать тип, который в последствии генерирует готовую функцию. Ни вернуть, не вставить в качестве аргумента.
Аноним 08/12/22 Чтв 16:28:51 #229 №2535270 
image.png
>>2535221
Аноним 08/12/22 Чтв 18:02:31 #230 №2535355 
vet.jpg
как же бомбит!
Я блядь должен 10 скриптов теперь встраивать в vscode ?

а как У ВАС В КОМПАНИИ? Линтер хотя бы запускаете для разнообразия?
Аноним 08/12/22 Чтв 18:06:54 #231 №2535361 
>>2535355
точнее, я хотел спросить:
много ли кода использовано с легальным использованием shadowing ?
Возможно, бросаться ставить линтер в CI идея дурацкая и неспроста в golangci-lint не поддерживается нигде
Аноним 08/12/22 Чтв 21:14:10 #232 №2535660 
>>2535355
>>2535361
нихуя не понял. golangci-lint давно умеет шедовинг проверять с помощью настройки go vet
linters-settings:
govet:
check-shadowing: true
>Возможно, бросаться ставить линтер в CI идея дурацкая
нихуя не понял. иметь линтер в CI это базовая вещь
>неспроста в golangci-lint не поддерживается нигде
нихуя не понял. не поддерживается что? где?
>а как У ВАС В КОМПАНИИ? Линтер хотя бы запускаете для разнообразия?
golangci-lint гоняется для всех гошных проектов с небольшой пачкой линтеров. команды по желанию могут расширить набор конфигом
>много ли кода использовано с легальным использованием shadowing ?
а нужно ли изъебываться и креативить с названиями для err
Аноним 09/12/22 Птн 11:53:39 #233 №2536130 
>нихуя не понял. golangci-lint давно умеет шедовинг проверять с помощью настройки go vet

Несмотря на настройку, это не работает. Именно об этом в книжке написано. Я попробовал.
Линтер, который он рекомендует в книжке, справляется.

>а нужно ли изъебываться и креативить с названиями для err
Но ведь это почти единственное применение затенения?
Аноним 09/12/22 Птн 12:02:32 #234 №2536135 
>>2535660
>golangci-lint гоняется для всех гошных проектов с небольшой пачкой линтеров
Ага! А с какой именно?
Там сейчас есть дефолтные, но интересно как у людей
Аноним 09/12/22 Птн 12:16:30 #235 №2536144 
>>2535660
возможно, я вчера был уставший и не правильно разобрался с go vet shadow.
Вроде бы сегодня все работает.
Соответственно, мне не нужно запускать несколько линтеров и у меня не бонбит
Аноним 09/12/22 Птн 13:03:43 #236 №2536189 
Не совсем понимаю горутины.
вот есть:

func () {
//код 1
go func() {
//код 2
}
// код 3
}
// код 4

код 2 НЕ предшествует коду 3 ?
А выполнится ли код 4 точно после кода 2 ?
где в описании языка об этом явно написано?

То есть, если я выполняю подсчет вызовов горутин через waitGroup, нужно ли мне каждом горутинном блоке дополнительно waitGroup.Add и waitGroup.Done ?
Аноним 09/12/22 Птн 13:27:21 #237 №2536205 
>>2536189
У тебя go func уходит в стек вызовов после кода 3
Аноним 09/12/22 Птн 13:46:31 #238 №2536215 
>>2536205
>go func уходит в стек вызовов
что эта фраза значит? какое явление описывает? Полностью на тарабарском.

В общем, я решил просто написать тестовую программу и выяснил что вообще ничего не понимаю в Go.
https://go.dev/play/p/ideka61QwER
Как правильно должна выглядеть работа с waitGroup в этом случае?
Аноним 09/12/22 Птн 14:49:52 #239 №2536261 
>>2536135
у нас errcheck gosimple govet ineffassign staticcheck typecheck unused
Аноним 09/12/22 Птн 14:54:53 #240 №2536266 
>>2536189
В этом примере все по фен-шую?
https://go.dev/play/p/pB2KEw_46Qo

Конечно, в такой простой логике не следовало бы использовать sync.waitGroup, однако мне неизвестно реальное количество обработчиков к тому моменту, как программа решит остановиться. Их будет чуть больше чем создано каналов и поэтому я использую waitGroup.
Но как тут принято делать?
Аноним 09/12/22 Птн 15:03:02 #241 №2536273 
>>2536189
2 выполнится после 1, но нет никаких гарантий относительно 3 и 4.
>>2536266
wg.Done желательно чтобы было видно там же, где происходит wg.Add. а также лучше wg.Done засунуть в деферы. если опустить глобальную вг и то, что processor завершается раньше тасок (мб с реальным кодом это и будет логично, но в примере кажется, что они могли бы отслеживаться вложенной вейтгруппой, которая создается в processor), то на минималках по феншую это примерно так https://go.dev/play/p/wvvh0AnEviN
Аноним 09/12/22 Птн 16:38:40 #242 №2536366 
>>2536273
ok. спасибо.

>Но в примере кажется, что они могли бы отслеживаться вложенной вейтгруппой, которая создается в processor)
Кстати, так и сделал.

А зачем ты вызываешь функцию processor не как горутину, а через анонимную горутину? В чем тут феншуй?
Аноним 09/12/22 Птн 22:42:04 #243 №2536873 
>>2536366
wg.Add(1)
go func() {
defer wg.Done()
это феншуй

а
wg.Done()
...
...
...
...
...
...
...
...
...
...
...
wg.Add(1)
go f()

это такое себе
Аноним 09/12/22 Птн 23:43:48 #244 №2536909 
>>2536366
Хороший у вас тред. Как правило, я за 3-5 так или иначе прихожу к тому же ответу, что будет напечатан.

Ладно. И что не так с поддержкой докера в vscode?
Почему в шаблонном проекте не отладочного файла?
Я прям устал с этим compose. Пока не очень работает, но судя по примете, я экспериментальным образом подберу параметры к понедельнику и все заработает.
Нг может есть готовый шаблон?
Аноним 10/12/22 Суб 14:23:09 #245 №2537282 
>>2536909
В общем я все починиль.
в VSCode какая-то засада с докером, если он НЕ питон и НЕ нода и НЕ Сишарп.
Единственное, что можно делать - docker compose up (причем нельзя делать посервисное поднятие).
После этого можно делать debug with remote connection.

У меня теперь другая засада : почему-то delve всегда пытается собрать новый бинарник под видом __debug_bin, а у меня в контейнере даже сети нет (так уж надо, в этом суть программы)

Что не так с delve? Как тут собирать бинарник под delve ?
Аноним 10/12/22 Суб 14:46:59 #246 №2537314 
>>2537282
сцуко, я тупанул.
dlv debug собирает, а dlv exec запускает.

Все работает, но могу придумать как и сеть отключить и отладчик оставить работать.
Аноним 11/12/22 Вск 03:26:11 #247 №2537799 
где можно купить жидкость для паник в ереване?
Аноним 11/12/22 Вск 03:43:34 #248 №2537801 
>>2537799
Для начала нужно нахуй съебаться из этого треда.
Аноним 11/12/22 Вск 04:03:39 #249 №2537803 
>>2537801
мне всего пару литров надо для CI
Аноним 11/12/22 Вск 14:33:47 #250 №2538047 
>>2521066
Докладываю, бро:

Все очень плохо.

Из-за ебучей системы сборки, Go не знает какой код на самом деле нужно компилить. Информации в файле go.mod недостаточно, ведь есть непрямые импорты. а go.sum используется только для проверки.
В блоге самого Докер, чувак предлагает подцеплять специальный том для кеширования. https://www.docker.com/blog/containerize-your-go-developer-environment-part-2/

В принципи, работает, я немного разочарован.
Аноним 13/12/22 Втр 05:42:46 #251 №2539533 
что выведет программа только не подглядывая
var err error
var val ✡error
var ierr any = err
var ival any = val
fmt.Println(ierr == nil)
fmt.Println(ival == nil)
Аноним 13/12/22 Втр 06:51:29 #252 №2539537 
>>2539533
true
false
Аноним 13/12/22 Втр 06:59:11 #253 №2539540 
>>2539537
>>2539533
Добавлю, что это не просто так.
По умолчанию, оператор присваивания берёт копирует само значение в переменную.
ierr это копия nil
ival это копия указателя на тип error
Аноним 13/12/22 Втр 10:38:31 #254 №2539616 
изображение.png
Пытаюсь подключиться к Postgres базе на своём ПК.

const (
host = "localhost"
port = 5432
user = "postgres"
password = "postgres"
dbname = "todos"
)

connStr := fmt.Sprintf("host=%s port=%d user=%s "+
"password=%s dbname=%s sslmode=disable",
host, port, user, password, dbname)

db, err := sql.Open("postgres", connStr)
if err != nil {
log.Fatal(err)
}

Вылезает то, что на пике.
1)Почему вылезают символы?
2) Как исправить ошибку? Установил postgres на ПК, создал базу todos через pgadmin4(через неё заходит в базу).
Аноним 13/12/22 Втр 11:57:18 #255 №2539671 
>>2539616
Правь pg_hba.conf
Аноним 13/12/22 Втр 12:06:18 #256 №2539684 
>>2539616
>1)Почему вылезают символы?
Несколько вариантов
- ты бывший 1с-ник.
- ты поставил postgres на венду вместо того чтобы ставить из docker

>2) Как исправить ошибку? Установил postgres на ПК, создал базу todos через pgadmin4(через неё заходит в базу).

Для начала разобраться с текстом. Если перенаправить вывод в файл, то его потом можно раскодировать
Аноним 13/12/22 Втр 15:03:15 #257 №2539846 
>>2510725 (OP)
А почему убрали из шапки этот курс? https://www.practical-go-lessons.com/
Аноним 13/12/22 Втр 15:05:36 #258 №2539849 
>>2539846
я копировал шапку с пастебина с шапкой, а там видимо не было
Аноним 13/12/22 Втр 22:58:55 #259 №2540207 
image.png
Вы че ебанутые такие названия классам и методам давать?
Аноним 14/12/22 Срд 23:18:58 #260 №2541216 
>>2540207
В Go нет классов. Не обманывайся внешней схожестью синтаксиса с ООП.
Аноним 15/12/22 Чтв 15:28:21 #261 №2541789 
>>2541216
Какая разница? Какой нахуй Sugar? Какой нахуй NewProduction? Infow? Infof?
Аноним 15/12/22 Чтв 15:37:21 #262 №2541793 
>>2541789
Процедурщина. В лучших традициях дедов с сишкой.
Аноним 15/12/22 Чтв 16:01:45 #263 №2541817 
>>2540207
Ах да
>Sync // flushes
СУКА
Аноним 15/12/22 Чтв 19:11:46 #264 №2542125 
1000000031.jpg
Аноним 17/12/22 Суб 20:17:53 #265 №2544118 
2457971411.jpg
Есть тут те, кто перекатился на go с java?
Если да, то зачем и почему?
Аноним 18/12/22 Вск 09:06:11 #266 №2544495 
>>2544118
Нет смысла переходить, Java до сих пор лучший язык современности. Быстрый и резкий.
Его хейт ТОЛЬКО в сторону тяжёлых фреймворков и индусов.
Аноним 18/12/22 Вск 11:18:37 #267 №2544570 
>>2544118
Смысл? Лучше на scala или хотя бы kotlin какой-нить перекатиться, а там можно жить уже.
Аноним 18/12/22 Вск 11:21:33 #268 №2544571 
>>2541216
ООП это не про синтаксис. Это парадигма. ООП код вполне можно писать на C.
>>2541817
Что не так? В unix есть команда sync например, которая flush`ит файлы из кэша на диск физически.
Аноним 18/12/22 Вск 20:08:41 #269 №2545097 
>>2544495
>>2544570
Ну, го достаточно хайповый стал, вроде бы. По ощущениям, меньше больших копроративных неповоротливых системы пишут, и больше интересных стартапных.
Так то мне Java, как язык, и так нравится.
Аноним 18/12/22 Вск 20:17:09 #270 №2545116 
>>2544571
> ООП это не про синтаксис
Так-то да, но в контексте какого-то языка всегда имеются в виду средства для ООП в этом языке. То есть классы, объекты, инкапсуляция, наследование, полиморфизм и другое говно.
Аноним 18/12/22 Вск 20:54:44 #271 №2545169 
>>2544571
>ООП это не про синтаксис. Это парадигма. ООП код вполне можно писать на C.
Это понятно, но писать ооп-лапшу с джаве и писать ооп-лашку в 1с это очень разный экспириенс. Во втором случае у тебя всё наследование и инкапсуляция держаться будет на иоглашениях.
Аноним 18/12/22 Вск 21:14:29 #272 №2545201 
>>2545097
Так он хайповый в России или в мире?
Аноним 18/12/22 Вск 21:14:49 #273 №2545202 
>>2545176
Gin точно хуита. Если попадётся - то это легаси 100%
Аноним 18/12/22 Вск 22:53:43 #274 №2545299 
>>2545202
Почему?
Аноним 18/12/22 Вск 23:10:37 #275 №2545309 
>>2545211
Gin.
Аноним 19/12/22 Пнд 02:49:48 #276 №2545434 
>>2545201
В РФ много вакансий уже. Вроде тот же хх, авито, сбермаркет, wildberries, Aviasales, ozon на голанге пишут. Некоторые даже свитчеров с Java/C# начали нанимать. Кстати, что интересно, походу только через свитчинг вкат и осуществим в голанг, для джунов вакансий нет, лол.
Просто я немного заебался с корпоративной тягомотины в банке на java, хотя так то мне java/spring стек очень нравиться. Хотя, понятное дело, это больше от проекта зависит, но всё же.
Еще пугает, пишут, что го говнокод зашкаливает, так как у вас там ООП нет и нормально применить всякие популярные паттерны невозможно.
Аноним 19/12/22 Пнд 02:58:49 #277 №2545438 
>>2545434
>походу только через свитчинг вкат и осуществим в голанг
Недавно кидали вакансию с Яндекса, условием которой был свитчинг на Го, лол.

>так как у вас там ООП нет и нормально применить всякие популярные паттерны невозможно
Это только для тех, кто не понимает сии паттерны.
Аноним 19/12/22 Пнд 03:14:51 #278 №2545443 
>>2545438
>Это только для тех, кто не понимает сии паттерны.
Что за паттерны такие? Ты имеешь в виду паттерны C-языка что ли?
Аноним 19/12/22 Пнд 03:37:12 #279 №2545450 
>>2545443
Это множественная форма от слова сей.
Аноним 19/12/22 Пнд 07:04:01 #280 №2545492 
>>2545434
>нормально применить всякие популярные паттерны невозможно.
Да ты и сам гавнокодер.
С современном айти паттерны не нужны никому, кроме индусам
Аноним 19/12/22 Пнд 07:08:33 #281 №2545493 
>>2545434
>В РФ много вакансий уже.
Не для меня вакансии эти висят. Мне нужны Европейские вакансии. На голанге где-то пишут, кроме легаси-контор в РФ?
Аноним 19/12/22 Пнд 17:14:58 #282 №2546101 
>>2545434
Даже не знаю как гошники живут без AbstractSingletonProxyFactoryBean
Аноним 19/12/22 Пнд 19:07:01 #283 №2546284 
>>2539846
>>2539849
Потому что долбаебы проебали шапку в одном из перекатов вместе с тегом, так что теперь тред даже в каталоге борды не отображается
Аноним 19/12/22 Пнд 19:18:57 #284 №2546293 
>>2546101
Паттерны появятся, как только индусы ломанутся получать свои 10 долларов в час, гавнокодя на нём для количества строчек
Аноним 20/12/22 Втр 18:37:30 #285 №2547596 
А как тут люди пользуются regex'ом, если нужны какие-то чуть более сложные обработки строк? Или тут такое не принято даже? Надо сторонние библиотеки импортировать?
Аноним 21/12/22 Срд 05:51:51 #286 №2547992 
>>2547596
> более сложные обработки строк
define

>как тут люди пользуются regex
Как в любом другом языке - строго по назначению: структурированные тексты небольшого размера
(грепать логи слишком дорого)
Аноним 21/12/22 Срд 12:02:57 #287 №2548161 
>>2545434
> так как у вас там ООП нет и нормально применить всякие популярные паттерны невозможно.
Некоторые невозможно, но большинство можно написать, тут нет классического ООП. Да и с другой стороны в чем суть писать всякие паттерны? Никогда не понимал почему джависты срут фабриками
ZalupaFactory zalupaFactory = new Zalupafactory();
ZalupaInAss zalupaInAss = zalupaFactory.getZalupa("inAss");

Вместо
ZalupaInAss zalupaInAss = new ZalupaInAss();

И такое по всему коду, если упадет стектрейс читать невозможно, нахуя весь этот лишний говнокод?
Аноним 21/12/22 Срд 12:23:23 #288 №2548186 
image.png
Для закрепления базового синтакса решил попробовать прорешать литкод. Дошел до линкед листов и немного опешил. До этого на пистоне для итерации использовал генераторы типа пикрелейтеда.
Поискал как подобное сделать на го и увидел, что самый популярный варинат это через каналы, что мне кажется не совсем чистым, так как требует запуска отдельной горутины (то есть фактически дополнительного треда и средства для его синхронизации). Можно ли как-то альтернативно это реализовать?
Аноним 21/12/22 Срд 13:52:03 #289 №2548303 
>>2548186
Что-то ты не то нагуглил, родной.
Я предполагаю как ты размышлял:
листы - итераторы - чем заменить итераторы в Го.

Не пытайся изображать итераторы там где их нет.
Ебош по Кнуту. Структурки, там, указателюшки, if then.
Аноним 21/12/22 Срд 14:14:14 #290 №2548318 
image.png
>>2548303
>Не пытайся изображать итераторы там где их нет.
range
Аноним 21/12/22 Срд 14:28:29 #291 №2548331 
>>2548318
А где yield ?
Аноним 21/12/22 Срд 14:33:43 #292 №2548340 
>>2548161
>нахуя весь этот лишний говнокод?
>How can an object be created so that subclasses can redefine which class to instantiate?
>How can a class defer instantiation to subclasses?
Аноним 21/12/22 Срд 14:35:51 #293 №2548342 
>>2548331
Где-то внутри, иначе как оно работает.
Аноним 21/12/22 Срд 14:46:45 #294 №2548350 
>>2548342
Нету его там.
Ты какой из четырех вариантов range имел ввиду?
Аноним 21/12/22 Срд 14:46:53 #295 №2548351 
>>2548340
>>How can an object be created so that subclasses can redefine which class to instantiate?
>>How can a class defer instantiation to subclasses?
А зачем это нужно? Я не спрашиваю как создавать подклассы, я спрашиваю нахуя оно нужно? И почему кроме джавистов никто такой хуйней не страдает?
Аноним 21/12/22 Срд 14:54:48 #296 №2548359 
>>2548351
орунах
Аноним 21/12/22 Срд 16:27:57 #297 №2548439 
>>2548350
Ну вот обычный, который по массивам, слайсам и мапкам бегает, вполне себе итератор.
Аноним 21/12/22 Срд 16:53:42 #298 №2548470 
>>2548318
Вынеси range в переменную и дёргай методы итетаров руками
Аноним 21/12/22 Срд 19:06:19 #299 №2548636 
>>2548439
но yield ведь нету.

Там наверняка можно что-то накрутить через reflect, но это будет трюк, а не идиома языка
Аноним 21/12/22 Срд 22:48:55 #300 №2548907 
>>2548636
> илиома языка
Костыли с каналами.
>>2548186
Горутины - не треды. Их можно создавать тысячами.
Аноним 21/12/22 Срд 23:51:03 #301 №2548951 
Если хочу вкатиться в бек или фулстяк, го норм тема? Год работаю js макаком, как то начинает уже заёбывать, хочется расширить квалификацию хотя бы, не вечно же кнопки красить.
Аноним 22/12/22 Чтв 00:05:04 #302 №2548968 
>>2548951
Вечно красил кнопки, а теперь будешь вечно отгружать жсоны.
Аноним 22/12/22 Чтв 00:09:37 #303 №2548973 
>>2548968
Чел, не демотивируй меня плс. Бекендеры решают серьёзные задачи, по сравнению с нами фротомакаками. Да и бекенд по универсальнее и шире же должен быть, соприкасается с другими специалистами намного чаще чем фронтенд.
Аноним 22/12/22 Чтв 00:12:05 #304 №2548975 
>>2548968
Только не жсоны, а протобафы, но это можно и на питоне делать.
Аноним 22/12/22 Чтв 00:28:33 #305 №2548982 
>>2548973
> Бекендеры решают серьёзные задачи
Да, с серьёзным видом отгружают жсоны.
Хорошо там, где нас нет.
Аноним 22/12/22 Чтв 05:04:35 #306 №2549036 
>>2548636
>но yield ведь нету.
Я кажется понял в чем наше недопонимание

Вопрос в том, действительно ли мы не можем создать свой итератор типа range, потому что создали языка просто скрыли аналог yield внутри компилятора и могут его юзать, но не дают это делать пользователю?
Аноним 22/12/22 Чтв 11:50:19 #307 №2549183 
>>2549036
yield не скрыли. его просто никогда не было.
тот range, который ты считаешь за аналог итерирующего range в python, это range, который умеет итерироваться по срезам и map.

И больше ничего.
Нет никаких итераторов в Go.
Аноним 22/12/22 Чтв 12:53:15 #308 №2549292 
>>2549036
Макака путает итераторы и генераторы, причем их конкретную имплементацию с yield. Забей на него.
Мимо
Аноним 22/12/22 Чтв 13:24:04 #309 №2549352 
>>2549292
ну давай покажи как надо
заставь это работать
https://go.dev/play/p/ZY4ckeLKPwn
Аноним 22/12/22 Чтв 13:25:04 #310 №2549356 
>>2546293
> Паттерны появятся
if err != null
наш главный паттерн. Джависты так не умеют
Аноним 22/12/22 Чтв 15:06:52 #311 №2549481 
СОЗДАЙ СВОЙ СОБСТВЕННЫЙ ЯЗЫК ПРОГРАММИРОВАНИЯ

https://dmkpress.com/catalog/computer/programming/978-5-93700-140-5/

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

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

Для изучения материала понадобятся базовые знания и опыт работы с языком высокого уровня, таким как Java или C++.
Аноним 22/12/22 Чтв 15:49:30 #312 №2549514 
>>2549481
Че донести хотел?
Этот вопрос со времен Dragon Book (1977) закрыт.
Ну гошники могли еще у K&P (Керниган и Пайк, это немного другая книга, но тоже хорошая) ознакомиться с lex и yacc
Аноним 22/12/22 Чтв 15:56:14 #313 №2549529 
>>2549352
хочется ебнуть по рукам за такой код

https://go.dev/play/p/qxjWa-eWYvS
Аноним 22/12/22 Чтв 16:16:11 #314 №2549551 
>>2549529
ты вообще что написал? Я не просил исправить код. Я просил показать как надо использовать итераторы в Go.

Я не вижу тут ни аналога yield(), ни аналога __next__()
Аноним 22/12/22 Чтв 16:30:30 #315 №2549568 
>>2549481
Если можно, поделитесь книжкой пожалуйста.
Аноним 22/12/22 Чтв 19:25:43 #316 №2549797 
Всё таки лучше го, пайтон или что-то ещё (нахуй пхп) для вката в бек?
Аноним 22/12/22 Чтв 19:32:55 #317 №2549805 
>>2549797
На голенге почти нет вакух для ждунов, на пистоне что бы вкатится нужно пробиться через тысячу таких же вкатывальщиков, выбирай.
Аноним 23/12/22 Птн 00:14:33 #318 №2550221 
>>2549797
Ты спросил в Go-треде, но не в тредах про питон и пхп, значит, выбор ты уже сделал.
Хотя хуй в бэк вкатишься через Go, здесь одни миддлы перекатываются из бэка на других языках.
Аноним 23/12/22 Птн 00:43:27 #319 №2550265 
>>2550221
Да, потому что пхп вызывает отторжение, в питон сложно вкатиться, я думал в го есть хотя бы относительный кадровый дефицит.
Аноним 23/12/22 Птн 00:47:16 #320 №2550269 
>>2550265
В Go нет кадрового дефицита, это язык для тех, кто знает, чего хочет, а не чтобы массово клепать бизнес-логику, как во всяких джавашарпах, где вечный дефицит кадров.
Аноним 23/12/22 Птн 00:58:44 #321 №2550287 
>>2550269
Джава говно уровня пхп, не хочу. Цшарп уже лучше, но всё равно хочу что то новое. Го так плох для вката?
Аноним 23/12/22 Птн 01:07:36 #322 №2550299 
>>2550287
Попробуй C++.
Аноним 23/12/22 Птн 01:26:49 #323 №2550322 
а в авито еще есть смысл подаваться стажеру/джуну?
Аноним 23/12/22 Птн 01:30:40 #324 №2550326 
>>2550322
> стажеру/джуну
Нет. Не ищи лазеек, их нет.
Аноним 23/12/22 Птн 13:48:06 #325 №2550697 
>>2550693
В Go тесты - антипаттерн.
Аноним 23/12/22 Птн 14:11:25 #326 №2550720 
>>2550693
большой вопрос что именно называть "интеграционными" ?
Библиотеку со специальным названием подсказать? Я не знаю.

github actions запускается прямо на ubuntu с установленным docker.

И что тебе еще нужно, хороняка?
Аноним 24/12/22 Суб 04:29:17 #327 №2551666 
>>2550693
у нас делается так: поднимается сервис и БД, соседние сервисы мокаются через ховерфлай. отдельный тестовый бинарь кидает запросы в поднятый сервис.
ну и нужно подумать надо ли оно тебе. мб тебе интеграционных тупо на репу хватит, а ручки можно юнитами протестить.
Аноним 24/12/22 Суб 14:19:55 #328 №2551971 
>>2551798
структурно вроде норм, так и должно выглядеть, разве што респонс не проверяется. единственные вопросы такие
- не видно как завершается app (t.Cleanup есть?)
- непонятно зачем t.Error с return, когда есть t.Fatal
- string(body) с %s можно не делать
Аноним 24/12/22 Суб 14:25:02 #329 №2551980 
>>2550322
подаваться есть смысл всегда. что тебе херочка сделает? приедет и разобьет ебало?
Аноним 24/12/22 Суб 14:43:08 #330 №2552005 
>>2551798
>Интеграционные и юнит тесты довольно логичное разделение.
ето да.
но как отделить интеграционные от дымовых и функциональных?
должен ли ты написать кучу разных mock-объектов или достаточно въебать какой-нибудь конфиг в docker имитирующий бд и батник с тестами?
Аноним 25/12/22 Вск 22:26:01 #331 №2553729 
>>2553721
И вообще, раз это интеграционный тест, то лучше просто поднять в коде веб-сервер, благо в 2022 с этим проблем.
Аноним 25/12/22 Вск 22:26:12 #332 №2553730 
>>2552383
классификация тестов - настолько неоднозначная и сложная штука, что нормальные компании на нее забили.
и вот что они предлагают:

>маленькие тесты выполняются в одном
процессе, средние тесты — на одной машине, а большие тесты могут охватывать
столько машин и процессов, сколько понадобится

ЮТакая классификация, в отличие от более традиционного деления на «юнит-тесты»
или «интеграционные тесты», была выбрана, потому что для нас важнее такие
качества теста, как скорость выполнения и детерминированность независимо от
широты охвата тестирования. Маленькие тесты с любой широтой охвата за счет
ограничений, наложенных на них, почти всегда быстрее и более детерминированы,
чем тесты, вовлекающие в работу обширную инфраструктуру или потребляющие
больше ресурсов. С увеличением размеров тестов многие ограничения ослабляются.
Средние тесты обладают большей гибкостью, но они недостаточно детерминированы.
Большие тесты сохраняются только для самых сложных и комплексных сценариев
тестирования.
Аноним 26/12/22 Пнд 09:08:27 #333 №2554004 
>>2553730
Годный пост, продвину в своей галере такую классификацию
Аноним 26/12/22 Пнд 12:21:56 #334 №2554140 
>>2554026
Все равно не ясно.
Давай на примере. Анон пишет некий ссылкосокращатель.
Как бы выглядел интеграционный тест и чем он отличался бы от функционального?
Интеграционный должен использовать мок-класс , а функциональный мок-вебсервис?
Аноним 26/12/22 Пнд 13:08:13 #335 №2554204 
>>2554154
Стало только хуже. Ты мемасы локальной конторы выдаешь за суть индустрии.
Вот одна из твоих ссылок сообщает:
>The difference is that an integration test may simply verify that you can query the database while a functional test would expect to get a specific value from the database as defined by the product requirements.

Ну вроде понятно, но смущает что все по-разному пишут
Аноним 26/12/22 Пнд 14:24:57 #336 №2554311 
>>2554259
>Мне больше нравится классификация от softwaretestinghelp, там вообще логичнее все. В рот их короче ебал
но там вообще нельзя отделить Функциональный от Интеграционного.
У них функциональность как отдельный признак.
Еще большая хуйня.

Хотел повыпендриваться знаниями? Так приходи подготовленным... на конференцию со звездами
Аноним 26/12/22 Пнд 23:56:05 #337 №2555011 
59.mp4
Ананасы, поясните момент и https://go101.org/article/channel-closing.html пример номер четыре

написали ахуительную функцию stop, а пояснить не поянили

// The stop function can be called
// multiple times safely.
stop := func() {
select {
case closing<-struct{}{}:
<-closed
case <-closed:
}
}

Ок, послали closing<-struct{}{} первый раз, это понятно.
Нахуя сразу же блокироваться на <-closed?

Если мы положили в не буферизированый канал closing<-struct{}{}, то он заблокируется и пре остальных случаях вызова stop мы будем сразу прееходить в ветку case <-closed и ждать пока канал closed закроют?
Аналогично этому мы блокируемся сразу после closing<-struct{}{}, чтобы первый вызов <-closed тоже заблокировался по аналогии с последующими вызовами stop?

Правильное рассуждение для чего нужен этот ебаный цырк? Эта ебка нужна, чтобы тот кто вызывает stop не упал с паникой потомучто канал закрыт, а просто блокировался?
Аноним 27/12/22 Втр 00:42:16 #338 №2555045 
>>2555011
> go101.org
хуй знает с чего ты решил что это хороший сайт.
Вот хороший сайт:
Язык_программирования_Go_2016Керниган.pdf
978544611885_Go__идиомы_и_паттерны.pdf

Чтобы горутина завершилась при close пиши в ней :
for elem := range channel {
fmt.Println(elem)
}
Аноним 27/12/22 Втр 00:51:16 #339 №2555054 
>>2555011
Ну вроде там все написано. Берем пример 4:
>Sometimes, it is needed that the close signal must be made by a third-party goroutine. For such cases, we can use an extra signal channel to notify the sender to close the data channel.

Но я не понял твой вопрос и с чего ты взял что там неблокирующийся канал использован? Это обычная техника.
Есть ситуации когда переменная-канал просто недоступна и какая-то горутина захочет все равно остановить или подать сигнал внутрь. В этом случае читают с помощью select из двух каналов сразу. struct {}{} используют как канал, но без конкретных данных.
Аноним 27/12/22 Втр 02:49:56 #340 №2555100 
>>2555054
Описание говорит we can use an extra signal channel to notify the sender to close the data channel.
А как нихуя не пояснили, просто высрали код.

>читают с помощью select из двух каналов сразу.
case closing<-struct{}{}:
Это же запись в канал идет, а не чтение,можно понять хотя бы метом исключения, потомучто по коду больне никто не пишет в closing.


Вопрос конкретный, какого хуя происходит в коде
stop := func() {
select {
case closing<-struct{}{}:
<-closed
case <-closed:
}
}

почему он должен останавливать сендер и почему его можно вызывать много раз?
Аноним 27/12/22 Втр 02:56:30 #341 №2555101 
>>2555045
>сайт
>дает название книги

Хуя дебил
Аноним 27/12/22 Втр 13:29:19 #342 №2555324 
>>2555100
как-то сложно наворотили, но я вижу что каналов два и как бы два статуса "сейчас closing" и "уже closed".
сами себе подают сигнал что ВСЕ.
Аноним 27/12/22 Втр 13:29:39 #343 №2555325 
>>2555101
постирония, не твой конек, да?
Аноним 27/12/22 Втр 19:27:04 #344 №2555779 
>>2524359
Офигенно, раскажи ещё чего нибудь
Аноним 29/12/22 Чтв 15:48:58 #345 №2557324 
>>2550693
https://pkg.go.dev/net/http/httptest#example-Server
Аноним 29/12/22 Чтв 15:53:20 #346 №2557329 
>>2555325
Как и твоя пунктуация.
Аноним 29/12/22 Чтв 18:38:40 #347 №2557459 
>>2510725 (OP)
Ваши прогнозы на 2023й год?
Будет ли говноланг где-то востребован, кроме русских банков?
Аноним 29/12/22 Чтв 18:44:25 #348 №2557476 
>>2557459
Не будет, скриньте.
Аноним 29/12/22 Чтв 18:48:17 #349 №2557481 
>>2557459
> кроме русских банков
А там хоть что-то кроме джавы есть?
Аноним 29/12/22 Чтв 18:51:13 #350 №2557486 
>>2557481
Есть PL/SQL и немного делфи и вижуалбейсика для клиентов.
Аноним 29/12/22 Чтв 18:57:33 #351 №2557499 
>>2557481
Ну вот как раз голанг ВНЕЗАПНО заходит в русские банки
Почитай вакансии голанга - там будет про то, что "переходим/переписываем на голанг"
Аноним 30/12/22 Птн 21:24:20 #352 №2558519 
>>2555779
да хз че рассказать еще, я не особо дохуя интересного делал. можеш вопросы задать
Аноним 30/12/22 Птн 21:29:27 #353 №2558520 
1658657149259689.png
>>2557459
так еще маркетплейсы/классифайды же есть. ну и в крипте тоже вроде применяют. ну т.е. всё что загребание бабла
Аноним 31/12/22 Суб 01:55:40 #354 №2558798 
>>2557459
>>2557476
>>2558520
Сейчас почти все МЯСО (кроме банков) в большинстве случаев пишет весь новый бекенд именно на го, насколько я слышу от своих одногруппников, которые там работают. Сам таким образом случайно вкатился го стажером в сентябре, хотя изучал долгое время жабу и спринг. Просто HR сказала, что команды с джавой стажеров себе не ищут, а вот те, что на го пишут, часто ищут себе стажеров в последнее время, ну я и согласился пройти собес просто ради интереса.
И там где я работаю, все старье с питухона/С++/иногда жабы/etc переписывают на го.

>>2545434
>походу только через свитчинг вкат и осуществим в голанг, для джунов вакансий нет, лол
А крупняк почти не нанимает джунов, они нанимают стажеров, из которых потом делают джунов.
Так вот вб, авито, озон стажеров точно нанимают на го, лично знаю стажеров (или уже джунов) из этих мест.

>>2544570
>scala
Скала кажется скорее метрва, чем жива. Самое крупнейшее сообщество скалистов в РФ - Тинькофф, и те начали от скалы уходить.
Аноним 02/01/23 Пнд 08:17:29 #355 №2560657 
Умеет ли голанг в мулти-компиляцию на разные ОС?
Аноним 02/01/23 Пнд 08:21:34 #356 №2560658 
>>2560657
да, умеет, нашёл. ну и подставить goos goarch свои значения
GOOS=linux GOARCH=amd64 go build -o linux_amd64
Аноним 02/01/23 Пнд 13:46:31 #357 №2560818 
>>2560658
Хоть один язык, где кросскомпиляция сделана без анальной ебли десятью неграми.
Аноним 02/01/23 Пнд 17:25:55 #358 №2561017 
image.png
image.png
>>2560818
А по поводу RUST?
Аноним 02/01/23 Пнд 17:53:29 #359 №2561054 
2023-01-0217-52-25.png
>>2510725 (OP)
>- Читаем документацию прямо по порядку (пункт "Learning Go"):
sage[mailto:sage] Аноним 02/01/23 Пнд 17:55:31 #360 №2561057 
>>2561054
Блять, как же вы заебали выёбываться на шапку, ну перекатывайте сами, раз такте умные.
Аноним 02/01/23 Пнд 19:33:35 #361 №2561129 
>>2561057
Никто не выёбывался, я реально нихуя не понял что имелось в виду, там какой-то конкретный раздел, просто по-другому называется или подразумевается что страничка документации это и есть "Learning Go"?
Аноним 02/01/23 Пнд 20:22:16 #362 №2561173 
>не мочь в документацию
Не, ну голанк не для вас.
Аноним 02/01/23 Пнд 20:28:25 #363 №2561176 
>>2561173
Документация - это видосики на ютубе.
Аноним 02/01/23 Пнд 20:32:55 #364 №2561178 
>>2561176
Среди видосиков только от Ardan Labs хорошие
Аноним 02/01/23 Пнд 20:36:53 #365 №2561188 
>>2561178
Почему всё на английском, где русек(((
Аноним 02/01/23 Пнд 20:39:26 #366 №2561193 
>>2561188
Английский язык это первый язык, что изучает программист
Аноним 02/01/23 Пнд 20:43:18 #367 №2561197 
>>2561173
Только доки и читаю всегда. Вопрос был что имелось в виду в шапке. Мне в общем-то похуй, что на него ответят, просто любопытно
Аноним 02/01/23 Пнд 22:45:57 #368 №2561258 
>>2561188
А вот >>2555045
Аноним 02/01/23 Пнд 23:16:51 #369 №2561274 
Поясните за context.Context. Я правильно понял, что сам по себе он никакие функции не кенселит, это задача кода переодически проверять не был ли context кэнселед и если да, то выходить с ошибкой?
Аноним 03/01/23 Втр 00:54:42 #370 №2561346 
Аноны, чё делать.
Сам я воннаби свитчер из пхп.
Надо по хорошему ебануть пет уровня очередного блядь говнокруда ебаного которые я в рот ебал: туду лист, 100 любимых фильмов и т.п.
Но у меня такое лютое полшестого при одной мысли, что я буду БЕСПЛАТНО делать хуйню, которой уже не первый год занимаюсь за деньги.
Хуй привстаёт только на идеи оффлайновых консольных приложух - архиватора, простенькой субд (особенно на это).
Тут писали, мол го это про круды, значит пиши круды или работодатель покрутит пальцем у виска. Но это такой мрак. Поддержите что-ль и скажите, что субд тоже норм, или подкиньте идей хоть для самую малость интересного круда. Ну а с меня нефть.
Аноним 03/01/23 Втр 01:07:36 #371 №2561359 
>>2561346
Докер, кубер, прометеус, консул и много чего ещё написаны на го и никто у виска не крутит. Пиши чё по кайфу. Единственное: но го не принято писать приложухи, которым нужна предсказуемая latency, потому что GC. Так что СУБД всё-таки мимо, хотя в академических целях чему бы и нет.
Аноним 03/01/23 Втр 01:18:45 #372 №2561368 
>>2561346
никакому нормальному челику не будет интересно твой пет/кофешоп листать. это что-то вроде лаб из универа, тысячная вариация одной и той же хуиты на гитхабе каждого второго индуса/китайца. ты уверен, что хочешь идти работать на людей, которым это интерсно?
>подкиньте идей хоть для самую малость интересного круда
>>>2397240 (OP)
Аноним 03/01/23 Втр 01:22:38 #373 №2561375 
>>2561368
>ты уверен, что хочешь идти работать на людей, которым это интерсно?
Хороший вопрос. А что, вопрос в хайринге разрабов на гоху не стоит таким образом, что люди без пета автоматически идут нахуй?
Я просто не в курсе реалий гошного рынка, а петов никогда не писал именно с целью показывать при найме, все мои петы сделаны для себя на языках, на которых я вряд ли буду когда-то работать (хотя чем чёрт не шутит, мой самый жирный - это мод для майнкрафта)
Аноним 03/01/23 Втр 01:24:08 #374 №2561376 
>>2561274
да. он насильно не убивает горутины и даже стак не разматывает. функции сами решают обрабатывать ли отмену контекста и как.
Аноним 03/01/23 Втр 01:24:14 #375 №2561377 
>>2561274
Все так.
Аноним 03/01/23 Втр 17:36:17 #376 №2561901 
Go-господа, какие материалы для изучения GO на русском можете порекомендовать? Англ еще учу - пытаться еще го учить со своим знанием языка совсем тяжко.
Спасибо!
Аноним 03/01/23 Втр 17:41:00 #377 №2561907 
>>2561901
Можешь дёрнуть курсы Otus с торрентов, мне такое особо не нужно, т.к. много воды и я не новичок, чтобы так мне всё разжёвывали, но тебе может и пойдёт
https://pastebin.com/fFyjSjJB
Аноним 03/01/23 Втр 17:42:25 #378 №2561911 
>>2561901
Ну и go-tour с твоей вводной можешь даже не открывать - он для людей, знакомых с другими языками.
Аноним 03/01/23 Втр 17:51:20 #379 №2561923 
>>2561911
>>2561901
Да, забыл добавить - я уже самостоятельная личинка веб-макаки фулстек на node.js хочется перекатиться на что-то более фундаментальное
Аноним 03/01/23 Втр 23:00:26 #380 №2562284 
>>2561346
> Тут писали, мол го это про круды, значит пиши круды
Кто и где такое писал?
Аноним 03/01/23 Втр 23:34:43 #381 №2562297 
>>2562284
Было
https://2ch.hk/pr/arch/2022-11-09/res/2409760.html

>Не слушай этого мудака, какой ещё нахуй n-body simulator, на тебя там все как на идиота посмотрят и спросят, ебанутый ты или да а ты и да, не рассказывать же на собесе, что послушался совета на двачах.
Го это на 99% язык для системных и околосетевых приблуд, докеров, сервисов, веб-сервисов, банкинга, недо-бд и так далее и тому подобное.
Поэтому для начала сделай простенький веб-бэкенд, чтобы получать запросики и сохранять их в бд и обратно. Хотя бы.
Потом попробуй поверх какую-нибудь бизнес-логику накрутить, например написать сервис-сокращатель ссылок, а лучше что-нибудь с фоновой работой
Аноним 04/01/23 Срд 00:05:19 #382 №2562322 
>>2562297
>язык для системных и околосетевых приблуд, докеров, сервисов, веб-сервисов, банкинга, недо-бд и так далее и тому подобное.
Соответственно, если ты ни в чем не разбираешься, как типичный кодерок, писать тебе вообще нечего.
Нет никакого смысла.
Нет идеи.
Нет движущей силы.
Нет пет-проекта.
Аноним 04/01/23 Срд 11:30:02 #383 №2562471 
>>2562322
>>язык для системных и околосетевых приблуд, докеров, сервисов, веб-сервисов, банкинга, недо-бд и так далее и тому подобное.
>Соответственно
>для начала сделай простенький веб-бэкенд, чтобы получать запросики и сохранять их в бд и обратно.
С - системность
а до конца мы не дочитываем, выхватываем только то что нам удобно?
Аноним 04/01/23 Срд 11:41:36 #384 №2562473 
>>2562322
Такая напыщенность, а когда задают вопрос "чем конкретно занимаешься":
>>2524359
продуктовые это уровня
- есть шина данных (например какой-то топик в kafka или NATS) и сервис, который умеет отправлять пуши пользователям. нужно запилить сервис, который будет слушать шину и при получении определенных событий ходить в rpc ручку сервиса пушей, чтобы отправить эти пуши. а еще нужно запилить дедупликацию с БД/редисом, чтобы одинаковый пуш дважды не отправить. плюс возможно после получения события надо сначала идти в какие-то другие сервисы, чтобы взять нужную инфу для пуша.
- или нужно начать отдавать какие-то данные на фронт, т.к. мы хотим пользователям больше инфы показывать, например граф движения посылки. для этого нужно в сервис с апишкой допилить поход в сервис статусов за этой инфой.

Эм, это как-то не похоже на системное программирование и на отсутствие задач для бекендера типичного кодерка, который ни в чём не разбирается, не находишь?
Аноним 04/01/23 Срд 13:59:31 #385 №2562577 
>>2562473
Я просто имел ввиду, что для вкатыша не может существовать пет-проекта на Go.
Пет-проект должен приносить радость. Нужно с ним нянчиться как с Pet.

Хорошо, если ты админчик или увлеченный хакер.
Но вкатышь из php не может им быть.


Кстати, кафки эти ваши, тоже какое-то бесполезное говно созданные потому что в больших корпорациях а) не знают что делать с данными, но знают что за их удаление их не простят
б) не могут договориться как их обрабатывать и поэтому делают шину.
То есть, это все непостижимо выходцу из мира обычных приложений.
Аноним 04/01/23 Срд 14:01:22 #386 №2562578 
>>2562471
>>для начала сделай простенький веб-бэкенд, чтобы получать запросики и сохранять их в бд и обратно.
с какой целью? в чем удовольствие ?

Пет-проект должен приносить радость с первых дней существования
Аноним 04/01/23 Срд 14:06:02 #387 №2562581 
изображение.png
Вот, нашел вам пет-проект https://github.com/usher2/u2ckdump
Вкатывайтесь!

Тут, правда, ОПЯТЬ нужно понимать проблематику, а лучше быть админчиком сетей доступа в Многострадальной Россиюшке.
Аноним 04/01/23 Срд 14:24:47 #388 №2562606 
>>2561346
Свой движок СУБД писать интересно, но боюсь что очень долго, да и без подготовки имхо тяжеловато будет.
Я вообще никаких петов на го в свое время не писал, просто сказал на собеседовании, что прошел го тур (но при этом был опыт на другом языке), в итоге взяли. А вообще лучше ковырять что-то уже существующее в опенсорсе, а не писать свои велосипеды, пользы больше будет + прокачаешь навык чтения кода.
Аноним 04/01/23 Срд 14:31:03 #389 №2562623 
>>2562581
>Тестов наделать например
Дебсы все еще верят в то что написать хороший тест не в десять раз сложнее чем написать говнокод который он должен тестировать.
Также дебсы продолжают писать assert 1+1==2 и думают что это несет хоть какую то пользу хоть кому то.
Аноним 04/01/23 Срд 14:34:52 #390 №2562629 DELETED
>>2562581
Напомни, serve fresh Roscomnadzor dump, что я бы хотел скачать, то что сейчас забанено?
Аноним 04/01/23 Срд 14:45:52 #391 №2562653 
>>2562578
Ну так можно рогалик сделать, и похую кто там чё итт скажет по поводу можно ли использовать го для этих целей или нет. А действия мобов в многопотоке обрабатывать
Аноним 04/01/23 Срд 14:48:37 #392 №2562658 
>>2562606
> прокачаешь навык чтения кода
Я как-то не замечал раньше, чтоб чтение кода было каким-то отдельным навыком, хз. Но совет про чтение опенсорса всё равно понял и принял.
Аноним 04/01/23 Срд 16:05:52 #393 №2562747 
>>2558519
Расскажи, что спрашивали на собесе когда устраивался
Аноним 04/01/23 Срд 16:58:06 #394 №2562787 
>>2562747
Дрочили вопросами про панику, рекавер, и что выведет append ))))
Аноним 04/01/23 Срд 18:09:26 #395 №2562927 
>>2562629
Да, но не совсем понятно откуда эти данные берутся.
Кажется, не везде стоят ТСПУ и кое-где есть самодельные блокировщики. Эту инфу сливают и этот тип делает какого-то бота.
Почему на Go - не ведаю.

Еще он автор доклада "Почему Golang такой странненький".Просто ему нравится писать.
Аноним 04/01/23 Срд 18:16:22 #396 №2562930 
>>2562787
а что то про технологии с которыми работал спрашивали?
Аноним 05/01/23 Чтв 00:06:02 #397 №2563326 
>>2562747
что такое горутины, как они шедулятся, чем обработка неблокирующих сисколов отличается от блокирующих, как гц работает, как подобрать таймаут на сетевой запрос, че там в пакете sync и как работает, ну дохуя классических вопросов в общем
>>2562930
про кубер пара вопросов есть, но чисто как бонус. из тулзов нужно знать ппроф/трейс, чем моки можно генерить. уметь sql писать, уметь пользоваться индексами. ну и уметь пользоваться каким-нибудь месседж брокером, а то иначе странно. плюс знать что такое метрики и нахуя (это к слову как таймаут подбирается) и такое
Аноним 05/01/23 Чтв 05:24:38 #398 №2563427 
>>2563326
спасибо, а то хочу свичнуться из ts бэка на го, и хочется быть готовым ко всему на собесе
Аноним 05/01/23 Чтв 12:19:48 #399 №2563540 
Когда делаешь слайсинг, оно просто меняет лен и делает новый поинтер на тот участок или как?
Аноним 05/01/23 Чтв 12:42:46 #400 №2563557 
>>2562577
>То есть, это все непостижимо выходцу из мира обычных приложений.
А кому постижимо?
Аноним 05/01/23 Чтв 12:43:57 #401 №2563561 
>>2563557
Глупых вопросов не задавай.
Таким надо родиться, очевидно же.
Аноним 05/01/23 Чтв 13:42:51 #402 №2563627 
>>2563557
постижимо, если тебя наняли упругим студентом и ты там 2 года поебался с кафками за (небольшие) деньги.
Пользу фрилансеру или мамкиному борщехлебу кафки принести не могут. Если ты пытаешься это изучать бесплатно, то мотивации не будет.
Аноним 05/01/23 Чтв 13:45:05 #403 №2563631 
>>2563540
что за тупой вопрос?
не можешь сформулировать слова понятно - напиши код.
Аноним 05/01/23 Чтв 17:42:51 #404 №2563917 
>>2563627
Нет, непостижимо. Выше говорили, что таким надо родиться. Ты либо рождаешься гофером, либо не рождаешься им, третьего не дано.
Аноним 05/01/23 Чтв 19:35:52 #405 №2564051 
>>2563540
Да, и про это было в пщ-туре

https://go.dev/tour/moretypes/11
Аноним 06/01/23 Птн 12:51:18 #406 №2564613 
>>2522599
Для отсрочки от мобилизации
Аноним 06/01/23 Птн 14:30:07 #407 №2564709 
Как вкатиться в Го с другого языка? Вакансий на джуна гофера практически нет.
Аноним 06/01/23 Птн 14:33:04 #408 №2564713 
>>2564709
Хороший вопрос
Лично я вкатился на гошку, когда пришёл на проект, в котором был golang
Просто начал решать таски по нему
Аноним 07/01/23 Суб 00:02:40 #409 №2565239 
>>2564709
вакансий на джуна в принципе нет
Аноним 07/01/23 Суб 00:09:00 #410 №2565240 
>>2564613
Вообщем нет, но cs база мб полезной также некоторые крупные компании типа IBM смотрят на это и существуют различные программы иммиграции с балльно рейтинговой системой канада / австралия, если тебя это интересует
Аноним 07/01/23 Суб 17:12:08 #411 №2565825 
>>2564709
Го это немного специфичный язык, на который как правило переписывают уже устоявшиеся копролиты на других языках (зачастую php). Поэтому чисто гошных вакансий мало, зато дофига вакансий PHP+Go, Java+Go, и так далее.
А особенно сейчас, когда многие конторы релоцировались и с рынком вакансий черте что происходит.
Тем более, что джуны никогда никому не были особо нужны, потому что джун в первый год-два это чистый убыток, мало того, что ему надо зарплату платить, так он ещё и отвлекает других разработчиков, которые иначе бы полезные дела делали.
Аноним 08/01/23 Вск 13:17:38 #412 №2566382 
>>2565825
>А особенно сейчас, когда многие конторы релоцировались и с рынком вакансий черте что происходит.
На гошке сейчас вакансий в России больше, чем в Европе
Аноним 08/01/23 Вск 19:40:21 #413 №2566877 
>>2566382
В целом ожидаемо, на го мне кажется условных сеньоро-миддлов больше, чем джунов и многие из них уехали, "закрыв" вакансии в ЕС и "открыв" их в РФ.
Тем более сейчас очередной финансовый кризис, медвежий рынок, вот это всё.

Но вот что будет в будущем, в том числе краткосрочном, и не закроют ли найм в россии - непонятно. Я разные прогнозы встречал.
Аноним 08/01/23 Вск 23:07:41 #414 №2567065 DELETED
Гоферы, поясните, какие плюсы от if err != nil в сравнении с традиционными эксепшонами? Почему нет? Просто Роб Пайк шиз, обкурился плана9?
Аноним 08/01/23 Вск 23:12:57 #415 №2567073 
>>2567065
Он обкурился сишкой, где тоже любят из функций возвращать коды ошибок. Хотя уже тогда там были setjmp/longjmp, используемые некоторыми для эмуляции эксепшенов.
Аноним 08/01/23 Вск 23:21:56 #416 №2567087 DELETED
>>2567073

Ну а аргументы за EC есть? Просто я ни одного не знаю, читаю книжку Хуйла "чистый код", он за эксепшоны ратует, потому что EC код захмамляют. А он вообще ассемблерщик лютый.
Аноним 08/01/23 Вск 23:46:13 #417 №2567131 
>>2567087
Из плюсов возврата ошибки в сравнении с ексепшенами:
1) Проще делать всякую около-ошибочную логику, вроде retry-ев всяких backoff, circuit breaker, etc
2) Асинхронщина. В общем случае не ясно когда завершиться (к|г)орутина, и тем более не ясно catch-ить её эксепшен в другом условном потоке
3) Производитльность. Стек трейс штука не бесплатная, в ряде случаев еще и бесполезная например когда разработчик ожидает конкретный эксепшен и делает что-то вместо логирования

Из минусов очевидное:
Но 99% случаев это да, замусоривание кода if err != nil { return nil, fmt.Errorf("do huina: %w", err) }
Аноним 08/01/23 Вск 23:54:44 #418 №2567144 DELETED
>>2567131

А нет какого-нибудь ченалинга?

result1, ec := huina1(stuff, nil)
result2, ec := huina2(result1, ec)
result3, ec := huina3(result2, ec)
result4, ec := huina4(result3, ec)

if ec != nil {

}

или хуйня идея?
Аноним 09/01/23 Пнд 00:03:29 #419 №2567155 
>>2567065
пайк ругался, если я получаю ошибку и не обрабатываю, причём не просто вконце функции, а непосредственно после вылезания ошибки, и сам потом мне говорил: вот я получаю ошибку и обрабатываю, и ты так делай!
Аноним 09/01/23 Пнд 00:05:55 #420 №2567158 
>>2567144
Каждый дрочит как хочет, есть, например, json либа, где в случае чего - паника, а потом на верхнем уровне - recover и возвращается ошибка значением. В yaml тоже самое. В sql.Rows сохраняется ошибка в структуре, а в каждом методе структуры проверяется эта сохраненная ошибка, и в случае её наличия метод ничего не делает. Это самое близкое к тому что ты написал. Но там это нужно для другого, а твой вариант не решает проблему того что надо if err != nil писать, просто перемещает эту проверку внутрь вызываемых функций. + бонусом добавляет проблему, что когда ошибка попадет в логи будет не ясно из какой именно функции она пришла.
Аноним 10/01/23 Втр 14:59:41 #421 №2569018 
>
Аноним 10/01/23 Втр 15:08:15 #422 №2569029 
Читаю про многопоточку в го-туре. Человек, до этого знакомый с многопоточкой на уровне "ну есть такое явление, слышал есть в ОС какие-то треды, там мьютексы пайпы семафоры". Вообще охуенно, не знаю это именно в пщ так пиздато сделано или меня просто так новая тема захватила, но штырит так что второй день нормально работать не могу, думаю о многопоточке.
Аноним 10/01/23 Втр 15:21:30 #423 №2569059 
>>2567144
а как ты поймёшь, какой еррор был в итоге? Хуйня как по мне

вообще всё это дрочь, экспешны проще. Бесят адепты гошки, которые с вдохновленными лицами рассказывают, как ЕС удобнее
Аноним 10/01/23 Втр 15:33:13 #424 №2569093 
>>2569059
>экспешны проще
Это когда нормальные.
В 1с например есть эксепшены, но он такие всратые, что обычно видишь
>сохраняется ошибка в структуре, а в каждом методе структуры проверяется эта сохраненная ошибка, и в случае её наличия метод ничего не делает
Аноним 10/01/23 Втр 20:36:44 #425 №2569522 
image.png
>>2569059
согласен намного лучше чем err != nil
Аноним 10/01/23 Втр 20:44:37 #426 №2569529 
>>2569029
Экскепшены тоже хуйня, потому что ломается вывод типов, неудобно чейнить код с ними, паттерн матчинг не заюзаешь, они требуют больше ресурсов при выбросе для раскрутки и так далее.
Лучше всего имхо это сделано в расте. Псевдокодом:

fun Foo() Result[int64] { // Result[T] = T || error
foo()? // ? - это сахар вокруг if err
bar()?.wrap("comment") // допишет в ошибку "comment" для трейсинга
switch b := baz() {
case error: обрабатываем b отдельно как ошибку, если очень надо
case specialError: обрабатываем b как специальный тип ошибки
case value: обрабатываем b как результат (если ошибки не было)
}
b := bazz()? // вернет ошибку, если b это ошибка иначе присвоит b значение
}

Отличный микс подходов. Компилятор генерирует эффективный код, ошибки видно в сигнатуре функций, легко резолвит нуллабилити, удобно для функциональщины, удобно для чейнинга, удобно обрабаывать ошибки и контекстуализировать их, не требует ни многострочных try(e) catch {throw e2(e)} на каждый пук.

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

----
Ну и если уж взялся рекламировать раст, отдельный ништяк это иммутабельные ссылки/указатели.
В го указали используются для нескольких вещей:
1) Передать указатель на что-то внутрь функции, чтобы поменять значение внутри, к пимеру функция sort(slice []T)
2) Сделать что-то опциональным/нуллабельным
3) Оптимизация лишних выделений памяти при копировании, которые произойдут, если начать большую структуру передавать в функции по значению

Хуйня в том, что не всегда понятно, зачем что-то передается по указателю в конкретном месте. Просто непонятно по сигнатуре функции, визибилити нет.
В расте же каждый из этих моментов реализуется по своему:
1) можно передать не sort(slice
[]T) а sort(slice mut []T) тогда сразу понятно, что это мутабельная хуйня и slice внутри функции будет изменяться
2) можно передать не sort(slice
[]T) а sort(slice immut []T) тогда сразу понятно, что это иммутабельная хуйня и указатель тут нужен для оптимизации передачи данных
3) можно передать не sort(slice
[]T) а sort(slice Optional<*[]T>) тогда сразу понятно, что slice опционален и его можно не передавать. Кстати, отдельным ништяком, Optional надо резолвить, доставая из него значение и поэтому nil pointer exception невозможен в принципе, ты не сможешь накосячить и попытаться разыменовать пустой указатель.

Короче имхо между Rust и Go потерялся идеальный язык. С гошной экосистемой, гошным рантаймом и прочими ништяками, но при этом с чуть большей свободой по работе с VM и памятью и разумным количеством сахара, чтобы не захламлять код обработкой ошибок, проверками на nil и прочим скамом из 80х
Аноним 10/01/23 Втр 20:46:38 #427 №2569530 
.png
>>2569522
Ты дебил?
Аноним 10/01/23 Втр 20:47:33 #428 №2569531 
>>2569530
а как ты поймёшь, какой еррор был в итоге? Хуйня как по мне
Аноним 10/01/23 Втр 20:52:09 #429 №2569536 
>>2569531
А в твоём примере как поймёшь? Ты точно так же возвращаешь самую первую ошибку.
Аноним 10/01/23 Втр 20:53:42 #430 №2569538 
>>2569536
хз
Аноним 10/01/23 Втр 22:40:21 #431 №2569614 
>>2569536
В го в этом то и прикол, что ошибки контектуализируются:

if err := foo(); err != nil {return fmt.Errorf("FOO: %d %w", userID, err)}
if err := bar(); err != nil {return fmt.Errorf("BAR %d: %w", whoreID, err)}
if err := baz(); err != nil {return fmt.Errorf("BAZ %d: %w", motherID, err)}

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

В го же ты в итоге получишь прям контекстуализированное сообщение об ошибке:
cant exec scenario 221: can't load user 115: can't find object "dick": gay detected
Аноним 11/01/23 Срд 06:51:23 #432 №2569810 
указатели и ошибки не понимают вкатуны или гавноскриптеры.
Аноним 11/01/23 Срд 14:19:42 #433 №2570168 
не понимаю указатели, в сторе создаю слайс указателей на структуру юзер и возвращаю слайс в хендлер, всё так делаю или как, как будто просто хуярю указатели не понимая, помогите
Аноним 11/01/23 Срд 15:15:12 #434 №2570255 
>>2570168
> в сторе
Ты как из реактотреда выбрался?
Аноним 11/01/23 Срд 15:34:55 #435 №2570288 
>>2570255
А что не так в том, что я делаю интерфейс сторер-залупанейм и передать его, а не конкретную базейку, я самоучка посоветуйте книг по бекенду
Аноним 11/01/23 Срд 15:53:49 #436 №2570325 
>>2570168
Указатель не есть абстрация языка.
Это данный нам свыше механизм адресации http://assembler-code.com/ukazatel-v-programmirovanii/
Аноним 11/01/23 Срд 16:03:32 #437 №2570338 
поинтеры придумали украинцы https://ru.wikipedia.org/wiki/%D0%AE%D1%89%D0%B5%D0%BD%D0%BA%D0%BE,_%D0%95%D0%BA%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%BD%D0%B0_%D0%9B%D0%BE%D0%B3%D0%B2%D0%B8%D0%BD%D0%BE%D0%B2%D0%BD%D0%B0
это не для русского человека
Аноним 11/01/23 Срд 22:16:07 #438 №2570881 
>>2569810
Указатели в пщ мало чем отличаются от ссылок в нормальных языках, разве что больше закорючек писать.
Аноним 12/01/23 Чтв 10:59:47 #439 №2571264 
изображение.png
>>2570881
>пщ

есть фотошоп с зайцем ПЦ изучающим Go?
Аноним 12/01/23 Чтв 19:52:12 #440 №2571788 
>>2510725 (OP)
Парни, ищу стажировку/позицию джуна, я адекватный чел, перекатился с питухона, есть универский бекграунд в области информатики, опыт коммерческой разработки - чуть больше года. Знаю/понимаю стек типичного микросервиса, в целом, если есть любой вариант писать коммерческий код на гошке, оставьте почту, я свяжусь.

Выбора нет, использую все каналы коммуникации. Даже двач, хули. Реальность 2к23
Аноним 12/01/23 Чтв 19:53:39 #441 №2571789 
>>2571788
Могу в 1с вкатить. Реальность 2к23
Аноним 12/01/23 Чтв 20:01:32 #442 №2571798 
>>2571789
Ниже планки неинересности/желания терпеть инструмент, к тому же 0 перспектив для меня там где я живу про 1с никто не знает и уж тем более не использует(я не из РФ капчую)

Я подумал, лучше я почту оставлю
[email protected]
Аноним 12/01/23 Чтв 20:04:16 #443 №2571801 
>>2571798
Ты не можешь "терпеть" то, о чём ничего не знаешь. Это как если бы я "терпел" паскаль.
Аноним 12/01/23 Чтв 20:07:41 #444 №2571804 
>>2571801
С хуев ты про паскаль ничего не знаешь, тебе 0 лет?
Аноним 12/01/23 Чтв 20:09:35 #445 №2571806 
>>2571801
Общая эрудиция позволяет сразу отказываться от того, что точно мне не интересно, иметь твердые для отказа совершенно не обязательно, достаточно общего представления, при отказе на работу тебе даже не пишут причину, ведь никто не обязан свое НЕТ объяснять. так и тут

>>2571804
Двачую.
Аноним 12/01/23 Чтв 20:10:25 #446 №2571808 
>>2571806
>твердые знания для отказа
быстро фикс.
Аноним 12/01/23 Чтв 20:16:18 #447 №2571813 
Ну раз тут уже начали торговать хуйцами, то и я хочу перекотиться из питона в го. Коммерческого опыта именно как питухон-разраб 2 года, ещё 5 лет дата аналитиком, но там чисто етл-скрипты писал с скл, потом уже в бэкенд перекотился.
На предыдущем месте Django/DRF/Ninja, Neo4j, GraphQL, Vue3, MSSQL+MySQL+MongoDB, немножечко Airflow и Nifi.
На текущем месте Flask, gRPC, Redis, PSQL, Gitlab, немножечко React и C# с MinIO
Аноним 12/01/23 Чтв 20:21:56 #448 №2571818 
>>2571813
Держись за место пока можешь, я даже на питухон разраба ловлю реджекты, недавно пробовал податься, деньги заканчиваются.
Стек Flask, Django, DRF, Psql, Docker, ща стал видеть требования по JS и всяким Vue , React, походу теперь надо быть фуллстеком, нежели простым питухонистом
Аноним 12/01/23 Чтв 20:36:28 #449 №2571823 
>>2571818
У меня есть накопления, и в принципе без работы с текущими тратами + инфляцией мне хватит на 2+ года, но коплю на свою отдельную недвигу, а прожирать это не хочется. На текущем месте меня вряд ли уволят в ближайшие 2-3 месяца, но у меня уже будет ровно год и я хочу просить прибавку через перформанс ревью, но боюсь его не пройду, т.к. мало чего за последнее время делаю и больше решаю мелкие баги/рефакторю проект, а не развиваюсь.
Хотел переписать grpc-ные сервисы на Go, но свежепришедший архитектор уже решил переписывать все сервисы на rest. А меня уже эти круды заебали.
Аноним 12/01/23 Чтв 21:28:14 #450 №2571848 
>>2571804
Я знаю паскаль на уровне, на котором ты 1с. Нормальные люди этот уровень называют "ничего".
Аноним 12/01/23 Чтв 21:29:58 #451 №2571852 
>>2571806
> Общая эрудиция позволяет сразу отказываться от того, что точно мне не интересно
Не интересно и "инструмент хуёвый" это два немножко разных понятия, если первое обосновывать действительно не надо, то второе - ещё как.
Я например не могу спиздануть, что паскаль - хуёвый язык, потому что меня сразу попросят обосновать и я жидко умру.
Аноним 12/01/23 Чтв 22:02:13 #452 №2571871 
>>2571823
>переписать grpc-ные сервисы на Go, но свежепришедший архитектор уже решил переписывать все сервисы на rest
нахуя
Аноним 12/01/23 Чтв 22:09:35 #453 №2571874 
>>2571852
Айти комьюнити сродни философам, лишь бы доебаться.
>неинересности/желания терпеть инструмент
Я не говорил что он хуевый, я сказал что у меня нет желания его терпеть, читай, нет желания на нем работать, я так давно мог стать Java QA и не ебать себе мозги с Го микросервисами и прочими вещами, мог вот буквально недавно стать Java Trainee , но после Go попытка написать ТУДУ на спринге вызвала у меня горение жопы, даже умолчу о том, что с Java у меня нет проблем, я писал на ней в универе, да и вкатывался с этого языка 3 года назад. Писать веб сервисы на таком я бы точно не хотел, потому что предвижу кол-0во проблем с этим инструментом, а так же , надо нести ответственность за сроки и реализацию, а с ним я этого делать не готов. Можно долго мусолить эту тему, но для меня не достаточно ПРОСТО ПИСАТЬ КОД, мне надо получать моральное удовольствие, чтобы на работу идти с горящими глазами, должна быть заинтересованность. Если ее нету то и результат априори хуевый(в моем случае). Мне не важно, хорошо это плохо. Это то что я прошел на личном опыте и никакие за-против этого уже не исправят
Аноним 12/01/23 Чтв 23:04:21 #454 №2571903 
>>2571874
Ты рассказываешь про вещи, с которыми ты ИМЕЛ опыт, в качестве аргумента в разговоре о том, с чем ты его не имел, я правильно тебя понимаю? Мне тоже не нравится спринг и не нравится 1с, но между разница в том, что я действительно работал с обоими этими инструментами и могу аргументированно пояснить что и как.
Аноним 12/01/23 Чтв 23:14:29 #455 №2571909 
>>2571788
Чебля? Просто подайся на вакансию разраба в яндексе/авито/озон/вайлдбериз. Там тебе предложат команды с го.
А по факту какая разница на чем писать? Главное, чтобы челы в команде были сильными разрабами, чтобы было у кого получиться. А язык это хуета по большей части.
Аноним 13/01/23 Птн 01:17:51 #456 №2571977 
>>2571871
Ну а как ты думаешь это происходит? Пришел чел, в жизни строчки кода не написал, 4 года работал в йоте, поднимал проект джавовый в роли архитектора, до этого работая кволити менеджером. Пришел в другую мобильную энтерпрайз-порашу, где люди пытались внедрить что-то новое, но ему лень разбираться, он с топами забухал и решил откатить всё на пару лет назад, ибо грпс это говно, а рест заебись.
Аноним 13/01/23 Птн 12:33:51 #457 №2572268 
>>2571903
Не обязательно быть грузчиком чтобы не хотеть таскать мешки
>>2571909
Не из РФ, озон вроде ок, но алгоритмы после 1 курса универа я не писал.
Аноним 13/01/23 Птн 12:48:12 #458 №2572276 
>>2571818
>Flask, Django, DRF
Помойка
Аноним 13/01/23 Птн 13:28:29 #459 №2572307 
>>2572268
>Не обязательно быть грузчиком чтобы не хотеть таскать мешки
Про "хотеть" речи не шло в третий раз. Речь шла про "утверждать объективную хуёвость"
Аноним 13/01/23 Птн 19:18:04 #460 №2572797 
image.png
Ну какой идиот придумал долгожданные дженерики запихнуть в квадратные скобки?

Как эту парашу читать?
sage[mailto:sage] Аноним 13/01/23 Птн 20:42:22 #461 №2572915 
>>2572797
Ознакомиться с документацией в Go.
Аноним 13/01/23 Птн 23:25:55 #462 №2573111 
>>2572307
ты сам выдумываешь проблемы и сам до них цепляешься. Что ты от меня хочешь? Какой смысл в твоих ответах? Ты тратишь мое время и свое.
Аноним 13/01/23 Птн 23:57:25 #463 №2573138 
>>2573111
Я проблему обозначил достаточно чётко - если хочешь, чтобы тебя не трогали, не давай оценочных суждений в областях, в которых несведущ.
Если не хочешь тратить своё время - ну покажи для начала человека, который держит у твоего виска пистолет, заставляя его тратить.
Я только что дал тебе алгоритм решения обеих твоих проблем, дело за малым.
Аноним 14/01/23 Суб 00:17:30 #464 №2573154 
image.png
>>2573138
>>2573111
бля ребят
Аноним 14/01/23 Суб 08:04:44 #465 №2573324 
>>2572915
>Ознакомиться с документацией
В каком другом языке дженерики через квадратные скобки пишутся?
Аноним 14/01/23 Суб 09:49:25 #466 №2573377 DELETED
>>2573324

Уголки лучше?
Аноним 14/01/23 Суб 10:00:14 #467 №2573380 
>>2573377
Лучше.
Аноним 14/01/23 Суб 15:20:19 #468 №2573639 
>>2573380
чем
Аноним 14/01/23 Суб 16:33:54 #469 №2573725 
>>2573154
типикал айти специалист, У нас такой был, девопс. Тоже кукарекал про оценочные суждения, то ему не нравится, тут мы НЕ ДОСТАТОЧНО ОБЪЕКТИВНЫ, ВЫ НИ ШАРИТЕ Я ШАРЮ!. Вообще команду раздражал, долго не хотели выкидывать на мороз, терпели. Потом проект отвалился, западный заказчик был
Аноним 14/01/23 Суб 16:51:20 #470 №2573762 
>>2573725
Чел, зашейся, тебя это в той же мере касалось
Аноним 14/01/23 Суб 18:24:21 #471 №2573903 
>>2573324
Какая разница, что там в других языках? Если нужно узнать про дженерики в Go. читай документацию Go, а не других языков.
Аноним 14/01/23 Суб 18:25:26 #472 №2573904 
>>2573639
[] для массивов, а <> для дженериков. Это отличительная черта и не нужно мешать
Аноним 14/01/23 Суб 19:45:32 #473 №2573966 
>>2573904
Да ну не, хуёвая придирка. Ты почти никогда не спутаешь массив с дженериками, слишком разные контексты применения. А дальше уже всё зависит от того, на какие символы твои глаза натренировались смотреть.
То есть, наверное уголки были бы самую чуточку легче для восприятия (но опять же: самую-самую, это придирка одного уровня с придиркой к долларам в названиях переменных в php), но оно бы усложнило парсер. Сейчас у символов >< вполне определенный контекст в смысле парсера и поэтому добавление им дополнительной нагрузки добавило бы туда порядочно логики и, возможно, замедлило его. Где-то на гитхабе можно почитать срачи внутри го тим на эту тему.
Аноним 14/01/23 Суб 20:48:02 #474 №2574026 
>>2573966
У него только одна придирка: сделано не как в его любимой джаве.
Аноним 14/01/23 Суб 21:39:11 #475 №2574074 
>>2573904
ну представь что вызовы функций это лукап в map[type]func(...) или аналогично для типов как если бы были first-class типы
Аноним 15/01/23 Вск 08:39:27 #476 №2574397 
>>2574026
Подобная аннотация есть в C# и TypeScript. А это - лучшие языки современности
Аноним 15/01/23 Вск 08:50:45 #477 №2574403 
>>2574397
Какая нахуй аннотация? В шарпе и тайпскрипте для дженериков угловые скобки.
Аноним 15/01/23 Вск 09:00:21 #478 №2574405 
>>2574403
Так и я говорю, что во всех нормальных языках дженерики сделали уголками. Один косоёбный golang использует квадратные скобки.
Аноним 15/01/23 Вск 18:06:13 #479 №2574862 
D70CB4F4-4AC0-4A75-A0A5-36AF0464FBF5.jpeg
>>2574405
Scala тоже использует квадратные. Ну и смотрим пикрил
Аноним 16/01/23 Пнд 15:14:06 #480 №2576091 DELETED
>>2574862
Кекнул.

Вывод:
Квадратные скобки лучше, чем уголки. Чем лучше? Чем уголки
Аноним 16/01/23 Пнд 18:43:03 #481 №2576344 
image.png
Гоферы, почему ваш язык говно?
Аноним 16/01/23 Пнд 19:03:47 #482 №2576382 
>>2576344
да просто не проверяешь ошибку и всё. получаеш panic: runtime error: invalid memory address or nil pointer dereference и лежиш урчиш довольно
Аноним 16/01/23 Пнд 19:14:49 #483 №2576399 
>>2576344
>не умеет пользоваться циклом
Ну хуле, вкатун идёт нахуй
Аноним 16/01/23 Пнд 20:47:30 #484 №2576515 
>>2576399
Ебать ты тупой)
Аноним 20/01/23 Птн 12:29:07 #485 №2580564 
Всем привет! Я гоу программист
Аноним 20/01/23 Птн 12:40:43 #486 №2580588 
Анонче, есть среди тебя те кто прошел миллион курсов по голангу и может зарекомендовать лучший? Ну скиллбокс там или слерм или кто? У кого самый годный курс?
Требуется не адвансед, а чтоб с нуля мне в голову правильно все вложили. Последовательно.
Я самоучка, все по верхам да по верхам.
Аноним 20/01/23 Птн 12:43:52 #487 №2580592 
Насколько я понял, читая тему, что в Go в основном приходят из других языков.
А реально ли в Москве свичнуться хотя бы на джуна Go после многолетнего опыта написания драйверов на чистом C под специфическую ОС?
Или нужен именно опыт работы в бэкенде и мой опыт байтоёбства на C не поможет?
Аноним 20/01/23 Птн 12:58:06 #488 №2580603 
>>2580588
Доки
Аноним 20/01/23 Птн 13:09:26 #489 №2580614 
>>2580592
Если писал что-то сетевое, то потенциально можно приплести
Аноним 20/01/23 Птн 19:51:13 #490 №2581215 
>>2580603
Ты безусловно прав. К докам я прихожу изредка, но только когда какие-то проблемы.
А мне бы хотелось какой-то курс от дяди, который структурированно и постепенно все вложит в голову.
А через доки вот получаются такие как я самоучки с кашей в голове.
Аноним 20/01/23 Птн 20:46:22 #491 №2581257 
>>2581215
Дисклеймер - го фановый язык для меня, деньги зарабатываю на другом.
Проблемы такие:
1. Го сам по себе не настолько суперсложный язык, чтобы его рассусоливать
2. Он не оброс экосистемой, чтобы её рассусоливать
3. Он не так давно появился, чтобы к нему появились курсы
Посоветовать тут можно только работать точечно, если у тебя проблемы с системщиной - смотреть туда, в отрыве от языка, если с языком - читнуть книг и посмотреть репозитории с кучей звёзд. А других вариантов особо-то и нет.
Аноним 20/01/23 Птн 20:49:09 #492 №2581259 
>>2581257
Месседж понял, спасибо.
Аноним 21/01/23 Суб 20:39:08 #493 №2582223 
>>2581257
> 2. Он не оброс экосистемой, чтобы её рассусоливать
Экосистема есть и вполне себе неплохая. Просто подход другой, в го не приняты фреймворки и ты сам собираешь себе проект из маленьких либ, в отличие от php, где ты бахнул ларавел и всё.
Но все кирпичики уже написаны, спокойно берешь logrus, pgx, sqlboiler, goose, kafka-go и что там ещё тебе нужно - и погнали. Новичку чуть сложнее, так как он не знает, чего брать.

> 3. Он не так давно появился, чтобы к нему появились курсы
Я тут недавно пытался найти курсы для родственника, так вот: хороших курсов не существует в принципе. Все скиллбоксы, яндекс-практимумы и хекслеты - это примерно одинаковый трешняк. Поэтому нет и не надо, хочешь изучать - берешь и сам гуглишь статьи, мануалы, примеры и пытаешься повторить, ничего лучше ещё не придумали.
Аноним 22/01/23 Вск 10:35:54 #494 №2582597 
>>2582223
> Просто подход другой, в го не приняты фреймворки
Нипонел а как же джины и гормы? Хотя джин ещё непонятно корректно ли ОСТНАСТКОЙ называть, учитывая что это выглядит как просто небольшой слой абстракции над стандартными примитивами.
>Поэтому нет и не надо, хочешь изучать - берешь и сам гуглишь статьи, мануалы, примеры и пытаешься повторить, ничего лучше ещё не придумали.
Это да, но к го это применимо в квадрате. Если в джаве хороших курсов не существует, то в го и плохих не существует.
Аноним 22/01/23 Вск 14:18:41 #495 №2582909 
>>2582597
> джины
Далеко не самая популярная штука, хотя и часто встречается. Труъ вей это взять роутер, какой понадобится, валидатор, какой понравится и тд и тп.
> гормы?
Вот сейчас серьезно и неиронично: горм это самое плохое, что ты можешь втащить в проект. Он хуево сделан, обладает кучей опасных особенностей и при этом ещё и не подходит к го идеологически.
Ни на одном серьезном проекте ты его не встретишь, максимум в виде легаси. И любой серьезный гошник скривится, когда его услышит.
Большое количество звездочек у него это в 99% джуны-воннаби гошники и результат пиара. Ну или перекатуны с джавы, которые по привычке пишут golang orm и потом используют первое, что выскочило.

> Это да, но к го это применимо в квадрате. Если в джаве хороших курсов не существует, то в го и плохих не существует.
Так если никаких хороших не существует, то зачем тебе вообще нужны плохие? Не используй вообще никакие.
Аноним 22/01/23 Вск 18:29:13 #496 №2583372 
>>2582909
>Не используй вообще никакие.
Я лично и не использую. Но то, что говно делится на сорта - всё же наблюдаю.
Аноним 22/01/23 Вск 23:48:34 #497 №2583805 
>>2583372
Да ну не делится оно.. Наверное теоретически можно что-то вынести из курсов. Из чего угодно можно.
Только соотношение вложенных усилий и вообще ресурсов к результату будет крайне неудачным.

Поэтому моё мнение всё ещё такое, что кто хочет что-то изучить - то выбора у него особо и нет, интернет, статьи, книги, мануалы, официальные example project и ответы в чатиках и на дваче опасно, многовато авторитетных джунов.

Не говоря уже о том, что курсы это как правило неудачный разрозненный копипаст хелловорлдов сомнительной давности. А их "менторы" это зачастую те, кто не смог стать нормальным разработчиком. По очевидной причине - зп "ментора" на порядки ниже зп хорошего разработчика.
Аноним 23/01/23 Пнд 18:50:07 #498 №2584702 
Какие подводные камни у вендоринга зависимостей? Мне кажется это просто имба, когда вижу папочку vendor сразу понимаю что с билдом никаких проблем не будет. Но почему это не юзают повсеместно?
Аноним 23/01/23 Пнд 21:07:03 #499 №2584824 
>>2584702
Репозиторий разбухает как на дрожжах, особенно когда микрописечная архитектура и у тебя 50+ репозиториев с практически одинаковыми зависимостями. Да и в го.мод и так конкретная версия указана, всегда можно подтянуть нужную версию
Аноним 23/01/23 Пнд 22:18:11 #500 №2584876 
>>2584702
Это просто не нужно, в go.mod лежат как названия и хеши коммитов, так и чексуммы самих зависимостей. Так что ты в следующий раз получишь ровно те же файлы, что и в прошлый раз, гарантированно.
При этом:
1) Не увеличивается вес репозитория, а качать много метров или даже гигов кода никто не любит; Особенно он увеличится, если ему придется хранить все версии всех используемых либ, а ему придется это делать, если ты будешь их обновлять.
2) Go mod периспользуются между разными проектами, в итоге оно не сжирает у тебя место в системе. Можешь посмотреть в качестве примера на nodejs, где ты в трех сервисах сделал npm install и у тебя количество занятого места в системе резко выросло гигов на пятнадцать; Хотя могло бы всего на 3 хотя и это пиздец
3) Скрывает ненужный дифф в реквестах, показывая только реально изменившиеся файлы в текущем проекте. Изменения внешних либ как правило не важны, так как мало кто прям досконально их смотрит. Обычно ченджлог глянули, убедились, что апи не изменилось - и нормально будет.
4) Так все делают, что ты как маленький.
Аноним 24/01/23 Втр 04:56:19 #501 №2584992 
Вот кстати, про вендоринг, да. Я немного на питоне скриптил. Есть там удобная штука venv. Ну т.е. под каждый проект свои зависимости в вирт окружении. Вы знаете.
А в го, я так понял, подход другой? У нас есть хома, в которой один воркспейс go и в нем хранятся все модули? Т.е. не важно где у тебя репозиторий в системен находится, зависимости всегда качаются в ~/go/pkg?
А есть возможность создавать вирт окружения на каждый новый проект? Хочу питон-вэй.
Или поясните почему это мне не надо.
Аноним 24/01/23 Втр 06:37:43 #502 №2585010 
>>2584992
В голанге парадигма пакетного программироования. Один пакет, одгт модули. Все пакеты потом в докер пакуются.
Аноним 24/01/23 Втр 18:23:04 #503 №2585684 
Есть что-нибудь, типа книг, мануалов на языке для работы с поиском, чтением и записью памяти процессов? Что-нибудь не громоздкое. В треде для нюфагов посоветовали книгу на 1000 страниц с рассмотрением симбиана, юникса и хобби автора. Ну вы поняли.
Аноним 24/01/23 Втр 22:44:43 #504 №2586028 
Я хуй пойму,пакеты в го это как классы в джаве или как нормальные пакеты? Почему к методу обращаются именно через пакет,а не через класс?
Аноним 24/01/23 Втр 23:38:55 #505 №2586116 
>>2584992
Тебе в го не нужно виртуальное отображение, у тебя все зависимости вообще всех версий для всех проектов кладутся в одну папку, ~/go/pkg, да - и соответственно каждый возьмет ту зависимость, что ему нужна (указана в go.mod).

Всякие питоновые venv'ы - это всё костыли, порожденные изначальной неприспособленностью питона к поддержанию разных зависмостей на одной машине.

Упрощенно говоря, у тебя есть либа А, которая хочет С версии 1 и либа Б, которая хочет С версии 2.
В питоне это будет жопа, потому что питон хранит их в системе просто как "либа А, либа Б, либа С" и не умеет поддерживать в системе раздельно "либа С1, либа С2", без venv и прочего.
В го в системе все пакеты изначально лежат в виде /пакет/версия:
/А/1 (хочет /C/1)
/Б/1 (хочет /C/2)
/С/1
/C/2
Так что такой проблемы в принципе нет, го решает её из коробки.
Аноним 24/01/23 Втр 23:41:33 #506 №2586123 
>>2586028
>Почему к методу обращаются именно через пакет,а не через класс?
нет такого. ни "методов" у пакет, ни "классов".
если обращаются через пакет, то это не метод, а функция. к методу обращаются через тип или через объект.

u := &url.URL{}
u.Query() // через объект
(*url.URL).Query(u) // через тип
Аноним 24/01/23 Втр 23:47:13 #507 №2586128 
>>2586028
Пакеты в го = либы, то есть, нормальные пакеты.
Правило потому что такое, чтобы не создавать ненужных коллизий. Проблем с этом не возникает, просто вопрос привычки.

> к методу обращаются именно через пакет,а не через класс?
Ты обращаешься к содержимому пакета через имя пакета, далее если ты обратился к классу (точнее структуре, мы же в го), то можешь использовать его методы.

import "some/packagename"

func foo() {
classObj := packagename.Class{}
classObj.Method()
}

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

type S struct {}

func (_ S) PseudoStatic() {
// do anything
}

func bar() {
(
S)(nil).PseudoStatic() // стильный вариант

var s *S
s.PseudoStatic() // джуновый вариант
}
Аноним 24/01/23 Втр 23:48:23 #508 №2586130 
>>2586128
Фикс второго кода, который пожрал двач, который до сих пор не умеет в нормальный маркдаун с блоками кода: https://go.dev/play/p/iJ88VOOXnhu
Аноним 24/01/23 Втр 23:58:51 #509 №2586136 
>>2584702
экономящие на байтах буратины. им еще так и хочется навернуть побольше дикой хуиты, чисто чтобы обыграть удаление вендора. например чтобы твой билд в докере лез наружу в какой-то кеш пакетов, чтобы не перекачивать зависимости каждый раз и т.п.

нормальные люди всё вендоряд, а сэкономленное время билда уделяют ревью кода зависимостей, который обновился, чтобы не завезти себе лишние баги и уязвимости.
Аноним 25/01/23 Срд 00:29:26 #510 №2586150 
>>2586128
Я правильно понял что в го структуры это аналог классов? То есть в пакете лежат структуры,в структурах методы функции. И чтобы обратиться к функции нужно сделать пакет.функция а не пакет.структура.функция?
Аноним 25/01/23 Срд 04:34:45 #511 №2586217 
>>2585010
>>2586116
Да, аноны, это я все понимаю. Как он хранит свои модули, как хранит питон, какие проблемы и прочее.
Я к тому и спрашивал - мол, правильно ли я понимаю и не ищу ли какое-то второе дно. Похоже, не ищу и готовлю го более-менее правильно. Но это как-то пиздец как непривычно. После питония осталось четкое хотенье своего воркспейса в любом месте в системе со всеми зависимостями и самодостаточного. А в го у тебя твой проект в 20 вложенных каталогах ходит за модулями и настройками в ~/go/
Просто не привычно.
В любом случае, спасибо за разъяснение.
Аноним 25/01/23 Срд 04:35:23 #512 №2586218 
>>2586217
Наоборот, ищу блять. Но теперь перестану.
Аноним 25/01/23 Срд 13:35:33 #513 №2586530 
>>2586150
> Я правильно понял что в го структуры это аналог классов?
Не совсем. Структуры в го похожи на структуры в С. От классов там только возможность задавать публичность/приватность. Методы в го можно сделать вообще для любого типа, включая примитивные, вроде int и bool, контейнеры, например slice (net.IP) и map (url.Values)

>>2586028
Пакет это аналог неймспейса из плюсов или шарпа.
Методы в го это штука довольно условная, с механизмом похожим на то как работают методы в питоне - т.е. это функция, у которой первым аргументом идет сам объект. Фактически вызов метода это вызов каррированной функции

>>2586128
Статические методы это костыль в языках в которых нет функций и разработчика заставляют ебаться в классы. В го чем-то отдаленным аналогом является вызов функции через тип, например (*S).PseudoStatic(nil). Зачем вообще ввели такой синтаксис я не знаю, единственное где оно выглядит некостыльно - это аргумент для финалайзера https://go.dev/play/p/21xgE0obfnf
В общем просто используйте обычные функции в таких случаях.
Всякие "псевдостатические методы", где на деле просто игнорируется ссылка на инстанс или копия если ресивер не поинтер но он есть это, по сути, не статические методы. Но они тоже бывают нужны, например для имплементации интерфейса объектом без состояния https://cs.opensource.google/go/go/+/refs/tags/go1.19.5:src/io/io.go;l=592
Аноним 25/01/23 Срд 13:56:24 #514 №2586543 
>>2586136
Двачу докер. Кроме того через вендор проще патчить зависимости. У меня на одном из проектов есть makefile target dependency:
@go mod tidy && go mod vendor && git apply patches/fix_hui_govna.patch
Аноним 25/01/23 Срд 14:39:11 #515 №2586593 
>>2586530
Окей спасибо,покопаю поглубже. Пока нравится что язык довольно немногословный и по ощущениям учится очень быстро. С другой стороны печалит что мало информации о кишках
Аноним 25/01/23 Срд 20:06:33 #516 №2587120 
>>2586593
> язык довольно немногословный
Вот это неправда, го многословнее других языков. Если ты не согласен, то просто не сталкивался с местными приколами, тут очень много всего нужно делать явно, что является го вей (и за что го многим не нравится).

К примеру, у тебя есть var iarr []int, а тебе нужен []int64. Что ты сделаешь?
В каком-нибудь другом языке ты можешь сделать i64arr := []int64(iarr) и всё, проблема решена.
В го же тебе придется прям вручную пересобирать слайс:
i64arr := make([]int64, len(iarr))
for i := range iarr {
i64arr = int64(iarr)
}
Аноним 25/01/23 Срд 20:11:43 #517 №2587125 
>>2587120
Я думаю он имел в виду бедный лексикон.
Аноним 25/01/23 Срд 22:03:39 #518 №2587234 
>>2587120
Я имел ввиду что в языке мало ключевых слов,да и возможностей в целом. Первым делом загуглил есть ли в го аналог листа из жабы,говорят используй слайсы. Плюс довольно странно что функция len() возвращает количество байт,а не количество символов. Не представляю зачем мне может понадобиться знать количество байт. Также у меня есть предположение,что го разработчики имеют в запасе кучу написанных вручную оберток и тупо переиспользуют их в проектах. Уже предвкушаю как буду писать ArrayList вручную. Но это в общем то не доеб,а чисто наблюдение. Каким бы не был язык,работает быстро,да и писать вроде достаточно просто,а это главное
Аноним 26/01/23 Чтв 00:07:56 #519 №2587343 
Чому резко стало дохуя вакансий на голанге с большими зпшками? Я, сишарп макака, уже завистливо поглядываю налево, так как сишарп в РФ занимает гордое место у параши
Аноним 26/01/23 Чтв 00:09:42 #520 №2587346 
>>2587234
> Первым делом загуглил есть ли в го аналог листа из жабы,говорят используй слайсы.
Ага, все списки в го только через слайсы. Есть ещё container/list, но это что-то скорее для собесов, в реальности практически не видел использований.

> Плюс довольно странно что функция len() возвращает количество байт,а не количество символов.
Зависит от контекста. В случае len(slice) - это будет длина слайса, в смысле количества итемов, то есть то, что надо.
В случае len(string) - да, вернет байты. Но там вообще непонятно, что ты хочешь посчитать. Со строками всегда всё сложно, есть к примеру юникод, где один символ может состоять из множества глифов. Пойди разбери, что для тебя "длина" в данном конкретном случае. И да, если тебе нужна прям длина строки в юникоде, или конверти string в слайс рун []rune и уже смотри его длину.
len(string)=bytes же нужно для байтоебства и всяких низкоуровневых оптимизаций. Это тебе не джава, привыкай :)

> Также у меня есть предположение,что го разработчики имеют в запасе кучу написанных вручную оберток и тупо переиспользуют их в проектах.
Неа, в целом в случае со слайсом ты почти всё можешь сам делать руками. https://github.com/golang/go/wiki/SliceTricks в помощь, если на память не помнишь чего то.
Аноним 26/01/23 Чтв 01:13:56 #521 №2587370 
>>2587346
Спасибо добрый анон за развернутый ответ
Аноним 26/01/23 Чтв 01:15:02 #522 №2587371 
Если в функцию передать слайс или массив и что-то с ним сделать изменится ли исходный массив. Говоря по русски в функцию передается копия массива/слайса или же сам массив/слайс?
Аноним 26/01/23 Чтв 10:45:33 #523 №2587617 
ссылки в го и с++ не одно и то же?
Аноним 26/01/23 Чтв 12:11:46 #524 №2587703 
>>2587234
> Уже предвкушаю как буду писать ArrayList вручную.
Чем тебя слайс не устроил? С дженериками много ебли в слайсы стало возможно вынести в отдельный универсальный пакет, например https://pkg.go.dev/golang.org/x/exp/slices, может тебе проще будет просто сделать что-то подобное под свои нужды?
Аноним 26/01/23 Чтв 12:14:49 #525 №2587710 
>>2587371
подумай почему append возвращает слайс и нельзя сделать тупо append(s, 123).

слайс это структ с поинтером на начало массива. при передаче в функцию создается копия этого структа. т.е копия len, cap и поинтера. если ты будешь менять какие-то поля (аппенд, например, может поменять все три), то из функции тебе нужно будет его вернуть. а если тупо будешь менять элементы в массиве, то не нужно.
Аноним 26/01/23 Чтв 12:26:42 #526 №2587718 
>>2587617
В плюсах есть pointer и reference. Первое во многом похоже на то что есть в го, а аналога второму - нет.
>>2587371
Массив копируется в функцию, т.е. изменения элементов не видны наружу. У слайсов, мап и каналов такого не происходит
Аноним 26/01/23 Чтв 17:58:12 #527 №2588320 
>>2586593
>язык довольно немногословный
нервный смех
Аноним 26/01/23 Чтв 21:37:51 #528 №2588623 
>>2588320
Всё так.
В языке есть только бе и ме, и ты этими бе и ме должен выражать системы арбитрарной сложности. Ессно на выходе получается что-то вроде
KoKoKoKoKoKoKoKoKoKo Kud-Kudah
KoKoKoKoKoKoKoKo kudah kO kud-Kudah Kukarek kudah
Аноним 26/01/23 Чтв 22:57:31 #529 №2588715 
Структуры это просто набор полей чи да? Класс без методов
Аноним 27/01/23 Птн 03:38:32 #530 №2588879 
>>2588715
Всё так. Методы можно к любому типу прикрутить
Аноним 27/01/23 Птн 03:49:27 #531 №2588883 
Завтра собеседования на миддла(сам оцениваюсь посредине, между джуном и)
Пока что дрючу https://www.practical-go-lessons.com
Помимо очевидного "к чему ещё готовиться" вопроса, интересно ещё, нужно ли зубрить базовые методы и синтаксис?
Многое забыл, и если нужно что-то, обычно открываю cheatsheet.
Аноним 27/01/23 Птн 15:04:16 #532 №2589533 
>>2588883
ну допустим такое
из чего состоит слайс, как работает append, что такое мапа и что за load factor, что такое интерфейс
почему горутины легче тредов, размер стека по сравнению с тредом ОС, какие есть точки переключения горутин, кооперативность шедулера, повесим ли мы всю программу если поставим GOMAXPROCS=1 и зайдем в tight loop, как обрабатываются блокирующие/неблокирующие системные вызовы, что такое нетполлер и на чем он основан, как стеки горутин аллоцируются и почему они фактически бесконечные
фазы гц, зачем нужны остановки мира и зачем нужен write barrier
че там в пакете sync, как реализованы каналы, быстрее ли канал мютекса, в каком порядке селект выбирает каналы, че за атомики и как они реализованы
что такое контекст и для чего используется
Аноним 27/01/23 Птн 17:39:49 #533 №2589795 
>>2589533
Спрашивали про:
>из чего состоит слайс
>что такое интерфейс и про ООП в го
>горутина vs тред vs процесс. Обмен данными между ними(proc-to-proc etc)
>какие есть точки переключения горутин
Про само устройство шедулера.
Описание и примеры проблем с горутинами и как они решаются.
В качестве задачи был факториал, который потом попросили ускорить [с горутинами].

На половине из этого зафейлился.
Спрашивали больше, но это запомнилось и было тобою упомянуто.
Кейворды, которые буду гуглить: NSQ, netconf, gorm xorm burm, b3 tree.
Аноним 27/01/23 Птн 19:14:05 #534 №2589903 
>>2589795
> gorm
«Горм не нужен» — говорили они, «го это вообще не про ORM» — говорили они
Аноним 27/01/23 Птн 20:21:39 #535 №2589973 
>>2589795
>> b3 tree
проиграл
Аноним 27/01/23 Птн 20:24:02 #536 №2589979 
>>2587718
>>Массив копируется в функцию, т.е. изменения элементов не видны наружу.
нет
Аноним 27/01/23 Птн 21:42:11 #537 №2590118 
>>2589979
мне кажется этот челик не про массив внутри слайса говорит
https://go.dev/play/p/t2siBRvwV22
Аноним 28/01/23 Суб 18:47:39 #538 №2591130 
>>2510725 (OP)
1
Аноним 29/01/23 Вск 13:26:08 #539 №2591887 
>>2589979
Пидора ответ
Аноним 30/01/23 Пнд 17:36:01 #540 №2593564 
https://go.dev/tour/moretypes/4

Это я тупой или составители примера?
Почему вместо 0x1e9 написали 1e9 и в результате печатается {1000000000 2} ?
Или в этом примере есть какой-то тайный смысл?
Кстати, откуда берётся 1000000000?
Аноним 30/01/23 Пнд 19:56:20 #541 №2593726 
>>2593564
Ты шиз? 1е9 значит 1 и 9 нулей
Аноним 30/01/23 Пнд 22:17:14 #542 №2593876 
>>2593726
Я сишник просто, вот и подумал, что опечатка:)
Аноним 31/01/23 Втр 17:09:05 #543 №2594573 
Кто-то по поводу курсов тут спрашивал, что скажете про эти: https://practicum.yandex.ru/go-advanced
И есть ли где-либо в природе сливы оттуда? Хотя бы "проектов", которые они там предлагают сделать.
Аноним 31/01/23 Втр 20:13:42 #544 №2594786 
>>2510725 (OP)
> смеемся с залетных крестоносцев
Я тут, шалом алейкум. Хочу, чтобы вместе с бэком на Го в одном проекте была Webassembly библиотека на сишечке, собранная GNU make-ом. Можно как-то сделать так, чтобы одним из шагов go build был вызов make? Насколько вообще распространены мультиязыковые проекты на Го - скажем, c фронтом и его линтерами, обфускаторами и так далее, упаковываемым в бинарник бэкенда?
Аноним 31/01/23 Втр 20:26:29 #545 №2594799 
>>2594786
Нет, с go build нельзя, но можно собирать через go generate
Аноним 31/01/23 Втр 23:52:25 #546 №2595009 
>>2594786
>чтобы одним из шагов go build был вызов make
а может лудше наоборот
Аноним 03/02/23 Птн 02:47:25 #547 №2597627 
Гоферы, вы там сумасшедшие что ли все? Публичность/приватность функции определяется по заглавной букве, как вообще до такой шизы можно было додуматься?
Аноним 03/02/23 Птн 02:51:26 #548 №2597629 
Хотя что-то в этом есть, можно по имени функции сразу понять, можно ли её вызывать из другого модуля.
Аноним 03/02/23 Птн 02:55:33 #549 №2597630 
Я бы тогда ещё впилил обязательную венгерскую нотацию. К примеру если объявил интовую переменную, то обязан добавить префикс i, иначе не скомпилируется. Для строк префикс s, для поинтера p и так далее.
Аноним 03/02/23 Птн 02:58:53 #550 №2597632 
>>2597630
Вроде есть что-то типа негласного хорошего тона, что если функция вызывает панику, то она начинается на Must
Аноним 03/02/23 Птн 06:48:23 #551 №2597673 
>>2597627
Ты рофлишь это база чуть ли не из семидесятых годов, только тогда прогеры сами эту нотацию юзали чтобы отличить локальное от нелокального, а теперь это возведено в правило.
Т.е. не знаю как до такой шизы можно было додуматься, но додумались до неё до того как твои мама и папа познакомились.
Аноним 03/02/23 Птн 16:51:47 #552 №2598090 
>>2597632
Только в 2к23-м это не нужно, по тому что можно написать свою функцию must всё равно вне main пакета её нельзя использовать

func must[T any](val T, err error) T {
check(err)
return val
}

func check(err error) {
if err != nil {
panic(err)
}
}

И использование что-то типо такого:

func main() {
file := must(os.Create("/tmp/hui.gv"))
defer file.Close()
}
Аноним 03/02/23 Птн 16:54:15 #553 №2598092 
>>2597630
заглавная буква позволяет обойтись без дополнительного кейворда уровня export совсем, а это функционально не заменит указание возвращаемых типов
Аноним 03/02/23 Птн 16:55:38 #554 №2598094 
>>2598092
невермайнд, я подумал што анон ебнутый и в название функций еще предлагает добавить
Аноним 03/02/23 Птн 21:26:18 #555 №2598372 
Подскажите, а почему оно пишет вот здесь https://go.dev/play/p/nTh6Zit556Z
"./prog.go:8:14: cannot convert t1 (variable of type T1 constrained by any) to type T2"
Можно как-то это решить? T2~T1 тоже не проходит.
Я вообще вообще могу написать дженерик функцию, которая конвертить сходные примитивные типы один в другой?
Если не могу, то го - говно и ваши дженерики нихуя не решают проблем языка
Аноним 03/02/23 Птн 22:21:50 #556 №2598431 
>>2598372
Твоя проблема в том что ты не понимаешь сути констрентов.
Ты не можешь взять любой тип и привести его в любой (другой?) тип. В общем случае ты можешь только ~T тильда Т привести к Т
Но если тебе нужно не вообще, а именно между числами, что имеет смысл - то и создай себе констрент который будет включать все числа кроме комплексных и конвертируй себе на здоровье

https://go.dev/play/p/kwVNSsnoJcp
Аноним 07/02/23 Втр 11:29:10 #557 №2601970 
>>2598431
Я не хочу только между числами, я хочу функцию, которая позволяет конвертить просто слайс одних типов в слайс других, если эти типы вообще конвертируемы. Числа здесь это частный случай.
Аноним 07/02/23 Втр 21:43:08 #558 №2602971 
>>2598431
>>2601970
Хотя впрочем хуй даже с ними со слайсами.
Я хочу просто универсальную дженерик функцию конверсии:

func convert[T1 any, T2 any](t1 T1) T2 {
return T2(t1)
}

Как я могу её написать?

https://go.dev/play/p/fGF0e71N93p ругается
Аноним 08/02/23 Срд 18:04:30 #559 №2603785 
>>2602971
>а давайте сделаем функцию которая делает T1(t2) чтобы вместо того чтобы писать T1(t2) мы могли писать t1 := convert[T1,T2](t2)
нахуя блять далбоеб
Аноним 08/02/23 Срд 22:21:46 #560 №2604056 
>>2603785
Потому что блять в го нельзя конвертить один слайс в другой, долбоеб, я об этом одним сообщением выше написал.
У тебя одна функция возвращает []int64, а другая требует []int32.
И тебе нужно руками создавать новый слайс и заполнять его значениями. Хочется написать одну дженерик функцию для этого, вместо того, чтобы постоянно копипастить этот код.
Аноним 09/02/23 Чтв 04:48:19 #561 №2604275 
>>2604056
ну нельзя блять
Аноним 09/02/23 Чтв 11:27:27 #562 №2604448 
>>2604275
Тогда ваш го говно, десять лет пытались добавить в язык дженерики и когда добавили, блять, выясняется, что они не покрывают ну самые очевидные ситуации.
Аноним 12/02/23 Вск 22:58:53 #563 №2609171 
>>2604448
ну чтобы добавить ([]int32)([]int64{}) женерики особо не нужны. если бы хотели, добавили так же, как недавние каст массива в слайс и наоборот.
Аноним 13/02/23 Пнд 09:12:58 #564 №2609376 
Гугл решил монетизироваться путём добавления в go ещё большей телеметрии https://github.com/golang/go/discussions/58409

Комментарии всех недовольных там жёстко удаляют.
Аноним 13/02/23 Пнд 18:04:00 #565 №2609970 
>>2609376
>Комментарии всех недовольных там жёстко удаляют.
>первый коммент Should be off by default
>ниже Now you guys want to introduce telemetry into your programming language? This is how you drive off any person who even considered giving your project a chance despite the warning signs
ну кажется все точки зрения там есть. нахуй нужен однообразный спам недовольных? пусть ставят эмоджы, их не удаляют.
Аноним 14/02/23 Втр 22:12:11 #566 №2611511 DELETED
>>2609171
Блять ну пусть или добавили бы, или сделали возможность по нормальному писать обобщенный код для таких ситуаций.
Кстати, та же хурма с поинтерами. Миллион случаев, когда тебе нужен поинтер на строку из константы скажем и приходится в миллионный раз в очередном проекте писать функцию
func [T any]P(t T) *T {
return &t
}

Тоже могли бы в язык добавить хотя бы такую функцию
Аноним 16/02/23 Чтв 08:24:34 #567 №2613005 
Берут ли на работу джунов гоферов или надо обязательно быть миддлом на другом стеке, чтобы перейти на голанг?
Аноним 16/02/23 Чтв 15:00:06 #568 №2613313 
>>2613005
Берут, по-крайней мере, мы брали пару лет назад. Сейчас хз что на рынке происходит, лично мы вообще найм прикрыли финтех.
Аноним 16/02/23 Чтв 17:43:43 #569 №2613496 
В каком типе данных хранят деньги? Разработчики зачем-то запихали тип для комплексных чисел, а для денег добавить забыли.
Аноним 16/02/23 Чтв 18:14:30 #570 №2613552 
>>2613496
В BigInteger
>Разработчики зачем-то запихали тип для комплексных чисел
Этож гугол
Аноним 16/02/23 Чтв 21:55:22 #571 №2613807 
>>2613496
Вот в этом храни https://github.com/shopspring/decimal
Поддерживает бд и хранит их правильно, его же используют всякие финтехи и интернет магазины (shopify)
Аноним 18/02/23 Суб 14:57:44 #572 №2615339 
Катимся, гофятки!

>>2614678 (OP)
>>2614678 (OP)
>>2614678 (OP)
comments powered by Disqus