Этого треда уже нет.
Это копия, сохраненная 7 июня 2023 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Cамого МУЖЕСТВЕННОГО в мире языка Go тред №22 /go/ 2614678 В конец треда | Веб
Go или Golang — компилируемый язык программирования от создателей таких шедевров, как UTF–8, язык С, UNIX, Plan9 и других. Go поддерживает типобезопасность, богатую и универсальную стандартную библиотеку функций и инновационные семантики одновременности: все то, что мы в индустрии называем concurrency и parallelism. На сегодня язык Go является маяком стабильности, прагматичности, де факто представляет из себя стандарт в мире бэкенд–микросервисов и серверного оркестрирования.

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

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

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

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

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

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

Небольшая конфа треда: t.me/golang2ch более чем живая!

Предыдущий тред умирает здесь: >>1986204
3 2614697
>>14678 (OP)
Вкатываюсь в deprecated джаву для залета в МЯСКОТ и надеюсь свитчнуться на гошечку внутри компании. Сеймиславы ?
4 2615001
Анончеки, подскажите, как мне решить дилему

>ID *int64


или

>ID int64


или

>ID int64, idSet bool (фу блять фу нахуй)


При создании экземляра ID не известен, и получается после добавления в базу. Соответственно, как чекать, ID действительно 0 или не установлен.

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

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

В общем, рассудите, как лучше сделать. Ситуация же дефолт.
5 2615066
Прочитал сейчас про срезы и если в них добавить новый элемент, то в одном случае он затирает элемент исходного массива, а в другом создаёт новый. То, что у меня с этого выгорела жопа, ничего не сказать. В каком вообще состоянии разработчики придумали это!? Почему нельзя было сделать предсказуемое поведение, где явно происходит создание новой сущности!?
6 2615192
>>14687
Почему в старом треде нет ссылки на перекат?
7 2615274
>>15001
type ID struct {
id int64
isset bool
}

func Create() ID {
return ID{0, false}
}

func (i ID) Set(id int64) {
i.id = id
i.isset = true
}

func (i
ID) Get() (int64, error) {
if i.isset {
return i.id, nil
}
return 0, fmt.Errorf("id not set.")
}
изображение.png170 Кб, 1801x777
8 2615719
Какая-то пиздота на пикрелейтед прилетела в мой пет.
Че с этим принято делать?
Не могу разобраться с тем что написано в go.sum
там действительно упомянуты какие-то древние версии
например есть такая строчка:
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod

Я даже не импортирую этот пакет напрямую и не вполне понял какой именно пакет его заимпортил.
go get -u сделал - кажется не помогло.

Как тут принято обновлять?
9 2615819
>>15719
Я, в принципе, понял в чем прикол.
https://github.com/google/gopacket/blob/v1.1.19/go.mod
Эти ребята вряд ли будут поднимать у либы golang.org/x/net версию ради меня?
И релиза от них не дождешься.

И нормально будет поигнорить сие странное уведомление, поскольку я знаю, конкретная уязвимость мою программу не затрагивает ?
10 2615921
>>15066
потомушто для каждого аппенда реаллоцировать слайс неэффективно
11 2616158
>>14678 (OP)
Под винду опенсорсное IDE удубное какое?
12 2616344
>>16158
Visual code не завезли под винду?
13 2616403
Одним словом GOвно.
14 2617076
>>15001

>автоинкремент


>не равнялся 0


господи, с какими дураками на одной борде сижу

>>15274
этот ещё и говнокодом обосрался
15 2617323
>>15274

>isset bool


Вы угораете?
16 2617427
Как написать фронт для своего пет-проекта? Достаточно ли будет html-шаблонов или надо полноценный фронт делать на ангуляре, реакте или вуе?
17 2617433
>>17427
Ты что вообще прокачать то хочешь пет-проектом? Бэк на го? Тогда не трать время на фронт и обычный хтмл сделай.
18 2617836
>>17427
Не трать время на парашный фронт. Максимум изучи ELM чтобы не содержать грязные .html .css .js файлы.

Пиши бек , даун.
19 2617995
>>15066
Чем не предсказуемо то, что если у тебя capacity < length, то нужно заново аллоцировать, ибо банально некуда больше разместить???? Во всех языках так работают динамические массивы
20 2618015
>>17995
Во всех языках - это отдельный контейнер, у которого свой АПИ с защитой от "дурака". А тут тебе вываливают все кишки и делай что хочешь. Очень легко ошибиться.
21 2618025
>>18015
Кто тебе какие кишки вываливает умник, что ты вообще несёшь? Чем тут блять отличается от других языков то блять? Единственное отличие, что слайс не копия, а и есть сам по себе массив с нужными оффсетами, о чем написано даже в ебучем го туре и в каждом ебучем месте об этом написано, но ты же тупой, для тебя это «кишки» тупой сука питоноеб
22 2618050
>>18015

>во всех языках


Уточни пожалуйста, в каких языках есть срезы? И про какие кишки ты говоришь?
23 2618070
>>18050
К примеру, в джаве есть ArrayList, в котором массив лежит внутри. Сам объект управляет им, а мы просто пользуемся благами динамического массива. Доступа к внутреннему массиву у нас нет и соответственно ничего сломать мы не можем.
24 2618092
>>17836
Пошел почитать про Elm и охуел. Кому это надо вообще? Ну нужен простой типовой фронт, идешь и делаешь его хоть на jquery, хоть на ванильном реакте.
Нахуя отдельный язык тащить в таком случае?
вообще было бы классно иметь какой-нибудь yaml-конфигурируемый интерфейс типа bootstrap, чисто чтобы его вообще без программирования натягивать на сваггер апи в таких неважных вещах
25 2618110
>>17076
Сейчас, да, заметил, что по крайней мере в SQLite автоинкремент начинает с единицы. Но вообще то это нихуя не очевидно, я с базами работать только начинаю.

Это типо универсальное соглашение и в 99% случаев база присваивает id с единицы?

Тогда в принципе можно и на обычном int64 херачить.
26 2618164
>>18070
Не поверишь, но тут точно так же
27 2618169
>>14678 (OP)
Есть смысл перекатываться с питона на го для написания повседневных скриптиков? Или го СЛОЖНЕЕ?
28 2618170
>>18169
Это будет заебистие и многословнее для скриптиков, а профитов никаких.
29 2618173
>>18170
Так блядь и думал,
но почему то го представлялся как "лучший питон"
30 2618174
>>17076

> господи, с какими дураками на одной борде сижу


Не перестаю охуевать с этого, кстати, я уже подозреваю, что тут кроме джунов и вечных джунов не сидит никто.
И тут непонятно, либо это такой срез индустрии и у нас действительно 99 кодеров из 100 долбоебы, или это специфика двача такая если последнее, то это что-то обо мне говорит

>>15001
1) Можешь считать, что если id == 0, значит сохранения в базу не было.
2) Вообще такая логика как правило говорит о том, что ты что-то делаешь не так. По идее тебе в коде должно быть или не важно, с чем работать или ты уже точно знаешь, что сущность, с которой ты работаешь - уже зафиксирована в бд.
3) Если хочешь обмазаться типами, то можно разделить данные и сущность со служебными полями, вот так к примеру: https://go.dev/play/p/F6XWYXpIlXm
31 2618179
>>18169
перекатываться с петона особо нет. будет меньше ебли с зависимостями, шарить скриптики проще, ну и легче параллелить хуйню. с другой стороны меньше пакетов и тупо import gosuslugi для скриптика не получится сделать за отсутствием либы. ну и базовая хуйня вроде пройтись по строчкам будет вербознее.
а с другой стороны если бы ты уже писал на го, то петон тебе нахуй не вдался бы, кроме случаев с либами
32 2618180
>>18179

>кроме случаев с либами


А что есть другие варианты?
Практически всё что когда-либо надо было сделать - делалось через уже готовые либы
33 2618184
>>18180

>А что есть другие варианты?


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

>Практически всё что когда-либо надо было сделать - делалось через уже готовые либы


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

>>18169
Короч, ключевая разница, это бекенды, апи и параллельная обработка данных.
Го из коробки очень быстрый и эффективный и при этом поддерживает нормальную многозадачность, что позволяет твоему апи отдавать ответы с очень маленькой задержкой и при этом программировать это все на более менее простом языке, которые не такой сложный как плюсы и не такой жирный, как джава.
Всякий финтех, а также яндекс (еда вроде бы) и прочие жирные стартапы поэтому активно пишут сервисы на го, а те, которые не на го (а на чем-то медленном, тот же php или питон) - на го переписывают, потому что во первых экономия ресурсов, го жрет сильно меньше, а во вторых производительность.
Ну и всякие сетевые утилиты а-ля кубернетес.

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

Поэтому для скриптиков менять стек я не вижу смысла, оставайся, где был.
35 2618335
>>18219
Погугли, что такое "слабая типизация".
36 2618342
>>18219

>Го из коробки очень быстрый и эффективный и при этом поддерживает нормальную многозадачность, что позволяет твоему апи отдавать ответы с очень маленькой задержкой и при этом программировать это все на более менее простом языке, которые не такой сложный как плюсы и не такой жирный, как джава.



IDE есть под него нормальное?
ООП там как?
37 2618360
>>18219

> Про cpython и прочую эзотерику вспоминать не будем



Фикс:
Cpython и есть самый дефолтный интерпретатор.

Скорее всего ты имел в виду Cython.

Мимопитономакака
16497722528740.jpg71 Кб, 564x831
38 2618366
>>18219

> Го из коробки очень быстрый и эффективный и при этом поддерживает нормальную многозадачность,


Как Си, дя?
39 2618388
Как писать методы для структур: со звездочкой или без?
40 2618414
Вот что меня напрягает в го, дак это ошибки, если что-то не используешь. Я может привык писать с расчётом на будущее, а компилятор мне бьёт по рукам.
41 2618416
>>16344

>удобное

42 2618420
Меня немного напрягает то, что внешние пакеты подсасываются с гитхаба. Где гарантия, что я не скачаю вирус и мне не заменят все файлы на сердечки, потому что я не из той страны?
43 2618422
>>18420
Ну будет говнопакеты.орг, и на нем такое сделают. В чем разница-то?
44 2618443
>>18416
Eclipse with GoClipse
45 2618748
>>18335
Ну да, имелось ввиду, что она динамическая неявная.

>>18342
Бля ну погугли, нахуя ты задаешь очевидные вопросы про ооп спорно, но скорее есть, ide от jet brains есть

>>18360
Я про эзотерику, которая пытается сделать из питона компилируемый язык.

>>18366
Только го со сборщиком мусора и планировщиком, а в си тебе придется много чего делать руками. Ну и в целом го всё же сильно освременнее.

>>18388
Смотря чего ты от этих методов хочешь

>>18414
Сделай хелпер-функцию try или assert и не парься, только в продакшен её не кати. Или используй "_" вот так :
val, _ := funcWithError()

>>18420
Это проблема не гитхаба, а опенсорса, никто не гарантирует, что ты не скачаешь хуйню через тот же npm к примеру.
При этом go.mod и go.sum во первых фиксируют версии, то есть, если ты поставил себе коммит X, то ты его и будешь использовать и если кто-то добавит хуйню в коммит X+1, то без осознанного go get -u ты на заминированный коммит не переедешь. А во вторых, go.sum хранит также чексуммы и даже если кто-то изменит код существующего коммита, то чексуммы не сойдутся и го это спалит и выругается.
Ну и никто не мешает тебе использовать зеркала, кэширующий goproxy или что угодно ещё, существует много инструментов.
46 2618894
>>18748

>го со сборщиком мусора


Он уже перестал статтерить весь сервер нахуй или его просо сделали отключаемый и на том забили хуй (после того как с го съебались крупные ребята)?
47 2619111
>>18894
Бля, это тебе не джава, вот уж где паузы прям заметны. Никто на го не забивал и там нормальный CMS сборщик.
48 2619148
>>19111
"Почему Discord переходит с Go на Rust" были новости не так давно,
и до этого помню точно такие же посты уже как с десяток лет лол
49 2619595
>>19148
Если бы ты внимательно читал эти "новости" трехлетней давности, или хотя бы пытался прочитать то, о чём я тебе писал вместо того, чтобы пытаться самым примитивным образом доебаться, то ты бы понял, что в дискорде (как и в дропбоксе до этого) они по сути делали огромный LRU кэш и в этом случае (огромная хреновина в памяти с (пере)записями по ключу) тебе в принципе языки с гц не нужны, гц будет тупо тратить кучу ресурсов на сканировании памяти, блокировки и так далее, когда у тебя профиль работы приложения вообще не подходит под такой флоу.
Вообще примерно любой язык с гц у них создавал бы проблемы из-за просадок во время работы гц: хоть го, хоть джава, хоть эрланг, хоть кто. Какие-то лучше, какие-то хуже.
И очевидно, что для того, чтобы тупо держать в памяти хэш таблицу и отдавать из неё значения, языки с прямым управлением памятью подходят намного лучше.

Возвращаясь к го, теоретически ты конечно можешь полностью отключить гц debug.SetGCPercent(-1) если не ошибаюсь и управлять памятью вручную, но тогда непонятно, зачем тебе го в данном конкретном случае. Так что чуваки из дискорда правильно поняли, что выбранный ими инструмент неоптимально решает их конкретную задачу и вместо того, чтобы делать си из го, они поменяли язык на более эффективный для их задачи. Здесь нет никакой проблемы ни в дискорде, ни в самом го, который по определению, как "язык с cms гц" обладает преимуществами (легче программировать) и недостатками (оверхед за счет гц).
50 2619692
>>19595

> го не подходит для высоких нагрузок



Ну так бы и говорили, вот только нахуй он тогда нужен на сервере?
51 2619704
>>19692
Я если честно уже заебался отвечать на тупые набросы, вы если уж хейтите, придумайте что-то поумнее.
Тебе прямым текстом сказано, что под профиль нагрузки "хэш таблица в памяти" языки с гц не очень хорошо подходят. Любые. В том числе го. Но на го, джаве или js знаешь ли никто ин-мемори бд и не пишет.
При этом есть куча других профилей - всякие лоу-лейтенси апи, байтомолотилки и тд, где такие языки работают хорошо.
52 2620007
А правда, что на голанге теперь тоже надо учить кучу фреймворков? В чём тогда его преимущество?
53 2620050
бля чет прикоснулся к го, и утонул в ошибках:
импортируемые модули отваливаются
для каждого нового проекта нужна новая папочка
для каждого модуля нужна папочка
модули отваливаются импорты срут ошибками
это че такое я не пойму
обновил эту поеботу с 1.16 и в маршрутке началось такоое..
54 2620187
>>20007
Неправда, никаких богоподобных фреймворков как в других языках в го нет. Точнее, встречается иногда говно на гитхабе, но я не знаю ни одно проекта, где такое бы реально использовалось.

>>20050
Ты что-то где-то у себя поломал скорее всего. Не представляю что, я ставил го раз 10 на разные системы и проблем не было ни разу. Снеси просто всё, что есть и поставь заново. И приходи с конкретными ошибками уже.

> для каждого нового проекта нужна новая папочка


> для каждого модуля нужна папочка


Эм, так везде, на всех языках. Даже не представляю, как может быть по другому.
55 2620235
>>18169
Сильно зависит от контекста. В ряде случаев лучше писать даже не на питоне, а на баше. Из плюсов использования го, кроме конкурентности, о которой уже писали, переносимость и обратная совместимость:
скрипты на любом интерпретируемом языке требуют в системе установленный интерпретатор, при том версии не ниже чем та, в которой поддерживается самая новая из использованных фич. В случае питона сломана еще и обратная совместимость, когда скрипт для второй версии не запускается на третей. Т.е. написанный на питоне 10 лет назад код уже не работает.
В го такой проблемы нет, бинарь по дефолту зависит только от libc, но при желании даже этого можно избежать и сделать программу, которая будет работать даже в пустом контейнере.
Да и го код 10 летней давности всё еще компилируется.
Возникает, конечно, проблема с тем, что на системы с разными ос/процессорами нужны разные бинари, но это решаемо, в го кросс-компиляция очень простая.

>>18748

> Или используй "_" вот так :


> val, _ := funcWithError()


Ни в коем случае не делайте так. В лучшем случае вы упадете на следующей строке, при некорректной работе с nil val.
В худшем вы продолжите исполнение с некорректными данными, если val это стринг или число. Так можно словить сложно отлаживаемое ебучее поведение, как в баше без set -e и set -o pipefail
Корректное использование игнорирования ошибок существует, но очень редкое.
А вот хелпер это да, хорошая идея. Я обычно такой использую https://go.dev/play/p/oJ65gdf6z3d
56 2620257
>>20235
Запрос был прямой

> , дак это ошибки, если что-то не используешь


ответ на это тоже прямой - хочешь пока накидываешь код что-то пока не использовать - юзаешь _.
В продакшен я и не советовал ему это пихать
57 2620319
>>20235

>panic


На этой ноте ты идешь нахуй, пидорас
58 2620338
>>20235

>panic


Рекавери-помешанный швайноджун, ты?
59 2620384
>>20319
>>20338
Посмотрите на этих клоунов, пишущих лапшу if err != nil. В его пример может и избыточно, но подрыв ваш не к месту.
мимокрокодил
60 2620391
>>20384
А как ты иначе собираешься еще хендлить ошибки? Святым духом?
61 2620396
>>20187
HTTP-серверы пишут каждый раз с нуля за счёт net/http?
62 2620398
>>20396
А что там писать с нуля то? Роутер это буквально две минуты, дальше уже отвечаешь уровня w.Write и все
63 2620514
>>20396
Обычно берут готовый роутер типа Echo, только это не фреймворк, а либа, то есть просто обертка вокруг net/http, которая добавляет более удобную работу с данными, миддлвари, опционально всякие распространенные хотелки по типу basic auth middleware и тп.

>>20319
Его check() это безусловно хуйня для продакшен кода, но если нужно быстро написать скрипт или просто набросать макет кода, то это нормальная тема. А мы как раз про такой сценарий и говорили изначально.
64 2620618
>>14678 (OP)
какая лучшая книга по ГО?

ток не 1200 страниц

хочу вкатиться за 5 недель(100ч обучения) и ЕБАШИТЬ 200.800к в месяц, в потом в ПМ/СЕО и ебашить миллионы в... день
65 2620635
как выйду на мил/день замучу тут конурс с фондом 100к
66 2620644
>>20618
Никакая, бери https://go.dev/tour , потом читай https://go.dev/doc/effective_go , потом смотри https://github.com/golang-standards/project-layout и мб что-то вроде https://google.github.io/styleguide/go/best-practices.html

И да, не понимаю, кто сейчас учит языки по книгам, это прошлый век. Это паттерны и алгоритмы не устаревают и то всякие новые модификации случаются , а у языков раз в год мажорные апдейты выходят.
Я все свои языки учил так: просто садился и начинал программировать, как мог, параллельно читая статьи с хабра по языку. Полезно ещё на публичные проекты поглядывать, но в го я к сожалению не могу посоветовать действительно идиоматичные и качественные публичные репозитории.
67 2620741
>>20618

>книга


>2023


>по программированию


>книга


Ебанутые люди, е б а н у т ы е
68 2620768
>>20741
Бля, ну не все вниманиедефицитники, как большинство зумерков, представь себе.
69 2620774
>>20768
Мне >30 и я не могу читать книги по программированию, по одной простой причине: одна половина там устарела, а вторая является водой, которую можно и нужно пропускать.
Намного проще сидеть и гуглить статьи, которые раскрывают конкретный вопрос.
70 2620785
>>20774
Да, копаться в таких же устаревших и водянистых статьях, выискивая ололо-актуальное и информативное. Уже бы про документацию бухтел лучше, не так смищно бы смотрелось.
71 2620790
>>20785
Документацию живых проектов хотя бы обновляют и она не может устареть. Да и воды там зачастую немного.
А насчет статей - ну так ты ищи нормальные и всё. По любому вопросу их десятки, ищешь и смотришь на даты.
72 2620793
>>20790
Ну так и книги ищи нормальные.
Специально для таких шизиков хитрые издатели начинают уже в ноябре-декабре выпускать книги с следующим годом выпуска. Твои статьи могут в такое? А? А?
73 2620843
>>20391
Нормальные люди делают это монадами, но у копипастоклоунов все как всегда.
74 2620909
>>20793
Покажи нормальную книгу по 20ому плюсовому стандарту? Или хотя бы 17? Ну если не плюсы, то хотя бы го 1.16??
75 2620919
>>20909
Не мешай ему жить в выдуманном мире, где серьезные (тм) люди пишут полноценные серьезные (тм) книги. А в релаьности та же моча и шанс найти хорошую статьюпо интересующей тебя теме намного выше, чем аж книгу.
76 2620925
>>20774
Дед, какой гуглинг, сейчас уже надо уметь правильно формулировать запросы к ChatGPT.
16014768782830.jpg91 Кб, 604x453
77 2621102
И снова здравствуйте.

Я могу в этой пиздоте уменьшить размер получающегося бинарника
cd fluent-bit-plugin-yandex/
export fluent_bit_version=1.8.6
export plugin_version=dev
CGO_ENABLED=1 go build -buildmode=c-shared \
-o ./yc-logging.so \
-ldflags "-X main.PluginVersion=${plugin_version}" \
-ldflags "-X main.FluentBitVersion=${fluent_bit_version}"

https://cloud.yandex.ru/docs/logging/tutorials/vm-fluent-bit-logging

Что они там на 50 мб запихали? Это же продукт типа EMBEDDED
78 2621140
>>21102
TinyGo/gccgo
79 2621144
>>21140
Либо -ldflags="-s -w", убирает всю дебаг инфу из билда
80 2621376
>>21102
А, блять, это вопрос был. Ни одного вопросительного знака в посте, пиздец. Принципиально не буду отвечать.
81 2621636
>>21376
Держи в курсе
82 2621786
>>21376
Ну один там был, хз чем ты читал
83 2622358
Почему в го решили писать типы шиворот на выворот? В Си всегда было удобно читать текст программы, что идёшь слева направо, сверху вниз. А тут на типах постоянно приходится перечитывать типа справа на лево. Очень не удобно.
84 2622372
>>22358
Го тур читни, там ссылка есть почему так а не эдак.
Вкратце - проще парсить и меньше двусмысленностей.
85 2623209
Оцените роадмап
86 2623217
>>23209
Пока ты эту хуитку рисовал мог бы уже десятую часть пета написать...
87 2623219
>>23217
Какой "я"?
Это в интернете лежит
88 2623245
>>23209
Ну и пиздец, тут даже не возврастанию сложности, а чуть ли не наугад идет
89 2623501
>>23209
это в пыньдексе?
90 2623656
>>23501
В нём
Я думал даже зачекать (разумеется выпросив у работодателя компенсацию хотя бы части стоимости), но мой пыл резчайшим образом охладил факт того, что трек "продвинутый хуесос", хотя и включает в себя полностью трек "простой хуесос", о чём прямо и заявлено — при этом не позволяет докупить расширенную часть себя отдельно. Т.е. либо ты берёшь расширенного хуесоса, либо берёшь простого, а потом "НУКА ДАВАЙ ещё разочек фуллпрайс заплати сынок ёбаный!" и тратишь 76к + 160к, за то, чтоб повторить половину курса, которую ты уже прошёл. Либо изволь раскошелиться сразу на полторы сотыги.
В пизду, проще самому изучить чем в это говно антиконсьюмерское ввязываться.
91 2623663
>>23656
Ебать ты придумал канеш, да там даже если бы был тот формат, который ты хочешь - один хуй бы того не стоило.
92 2623701
Напомните правильный способ получить ключ на goland
93 2623711
>>23656
Пиздец цены, вы долбоебы что ли столько платить? Да даже 10к это уже дохуя.
Это же не роадмап, это ёбаное ничего, вы берете го тур и доку, читаете их и получаете ровно то же самое, скорее всего ровно теми же словами.
Нахера вы это делаете и кормите всяких жирных тварей? Из надежды что-ли, что вас научат чему-то уникальному? Зря, всё это в интернете есть и публично доступно.
94 2623818
>>23711
Я рассматривал варианты, расслабься.
Причём я под это дело хотел чужие деньги юзать.
95 2623900
>>23818
Тогда нахуя за это другие людя платят. Понятно, конечно, что раз платят, то долбоебы, а долбоебы должны страдать - но всё равно, нахера =/
Любые курсы это говно, чел, любые. Программированию невозможно научить на курсах, ему можно только научиться самому, а для этого никакие курсы не нужны. В интернете тонны гайдов и мануалов для самых маленьких, а в телеге сотни каналов, где на нубские вопросы можно почти моментально получить ответ. Курсы это место, где ты платишь деньги за то, что тебе в лучшем случае ртом на видео прочитают мануал из интернета. В худшем, тебе скинут доступ к копипасту мануала (нескольких) из интернета.
image.png20 Кб, 905x383
96 2623966
>>23701
1. устроиться на работу
2. завести тикет
97 2624079
>>23900
Я умею программировать, но я всё ещё долбоёб (мидл), который умеет только хуярить по тз и когда надо запилить проект с нуля, особенно на незнакомом языке — у меня глаза разбегаются.
Но правда конечно в том, что если мне разжуют проект, то я останусь на том же уровне, очевидно. С другой стороны, если разжуют аккуратно, давая лишь примерное направление — может чего и выйдет путного.
>>23966

>устроиться на работу


Ну это понятно, я хочу немного покодить прежде чем туда устраиваться.
В любом случае уже решил через EAP
https://www.jetbrains.com/go/nextversion/
98 2624090
только начал изучать golang. написал как в видеоуроке, ожидая что вывод будет таким:
1
2
3
4
но выводит бесконечную последовательность...
Притом то такой такой цикл работает как надо:
n:=1
for n<5{
fmt.Println(n)
n++
}
Помогите пожалуйста
99 2624096
>>24094 (Del)
Бляяяяя. Я сейчас от стыда в окно выйду. Жаль что на дваче нельзя удалять свои посты. Сори за щитпост
100 2624100
>>24079

> Я умею программировать, но я всё ещё долбоёб (мидл),


Тогда тебе тем более курсы не нужны. Сеньором тебя сделает опыт и архитектурные навыки, которые тоже опыт. Многой работай над сложными проектами, чтобы его получить.
101 2624109
>>24079
А как ты определил себя мидлом.. но если ты не работаешь? Это работает не так
102 2624113
>>24100
Успел поработать над одним, потом менеджмент сделал ход конём и запилил проектную команду, а я остался за бортом лениво подкостыливать легаси, уровень задач упал до плинтуса, по сути больше половины задач — стажёрские/джуновские, от чего хуёво и мне и бизнесу (мне — понятно почему, бизнесу — от того что стреляет дорогими бронебойными снарядами по небронированным целям)
103 2624114
>>24109
Где написано что я не работаю? Мой трудовой договор утверждает прямо противоположное.
104 2624117
>>24114

> я хочу немного покодить прежде чем туда устраиваться.

105 2624120
>>24113
Одного проекта мало, чтобы подняться как бы над проектом и смотреть на него уже с архитектурной точки хрения, нужна насмотренность. Когда сделаешь одно и то же 5-10 разными способами и в половине случаев обосрешься, то вот тогда уже сможешь сравнивать и делать выводы.
В-общем, путь уже от миддла до сеньора занимает года 4 фулл тайм работы над разными проектами, сложными и чтобы один отличался от другого, на мой взгляд. Чтобы в одном ты делаешь апи, в другом работаешь над стримингом, в третьем разрабатываешь конструктор и тд и тп.
106 2624125
>>24117
Немного покодить на го
>>24120
Я и не говорил что это много или достаточно, я как раз и говорю что хочу ещё.
107 2624128
>>24079
почему просто не взять опенсорсный православный вскодиум/вим? единственный раз когда у меня появлялось мозжечковое желание попробовать голанд это когда в самописный голандовский плагин нашей компании добавили удобные фичи, заменяющие часть (5 минут) работы руками
108 2624131
>>24128
Потому что вим это не IDE, а просто редактор и даже если ты до жопы обмажешься плагинами, то не сможешь сделать из него IDE?
Не знаю насчет го, но с другими языками IDEA творит прям чудеса, встроенный рефакторнг, генерация, темплейты и так далее позволяют писать код практически без нажимания на кнопки, просто хоткеями. Вим в лучшем случае пародирует такую мощь.
Другой вопрос, что почти все разработчики используют возможности IDE процентов на 5, просто как редактор, а потом ещё и начинают что-то вякать про вим. Долбоебы, одним словом. Джетбрейновские IDE умеют делать прям пиздец сколько много всего полезного.
109 2624147
>>24131
хз, я конечно всех фичь не знаю, но штуки уровня вынести кусок кода в отдельный метод/переименовать метод во всем проекте/запустить генерацию или отдельный тест постепенно в редакторонезависимые лэнгуеч серверы мигрируют. а часть хуйни все равно из консольки приходится использовать
лично я с разной стпенью эпизодичности помимо го/sql там луа/петон/баш/петон использую и не иметь необходимости настраивать/привыкать к несколькиим редакторам удобно. хотя конечно кому-то норм, холиварный вопрос возможно в го треде это обсуждать не стоит
110 2624231
>>22358

> Почему в го решили писать типы


Потому что не осилили нормальный вывод типов как в нормальных языках.

>>22358

>А тут на типах постоянно приходится перечитывать типа справа на лево.


Ну с такой проблемой все-таки скорее к психиатру. А так - бывает неудобно переключаться, но вопрос привычки.
111 2624247
>>23701
Ебашишь 5 задач на степике
Воуля у тебя есть ключ на 3 месяца
Повторяешь данный механизм через 3 месяца
112 2624275
>>24090
У тебя манжара? Что за IDE?
113 2624277
>>24247
Лучше пользоваться полностью бесплатным VS Code, потому что лицензия может закончится в самый неподходящий момент, а потом перейти на другую IDE будет сложно.
Кроме того VS Code ест мало памяти, а продукты от жидбрейнс со старта сжирают по 4 гига.
114 2624287
>>24277

>а продукты от жидбрейнс со старта сжирают по 4 гига


Это само по себе не самое смешное.
Самое — это когда у тебя игры на разогнанной с поджатыми таймингами ОЗУ работают стабильно часами, а pyCharm вешает нахуй всю систему.
115 2624494
>>24287
Амуде блядь спок
116 2624528
>>24494
Это штеуд, шиз.
Сегодня не существует железа, которое бы не бустилось от разгона памяти, всё давно упёрлось именно в неё.
117 2624597
>>24528
Шизоид, что ты там на интеле озу бустил, кому ты пиздишь, такой хуйней только на амд занимаются
118 2624620
119 2624731
>>24597
Держи в курсе, пожалуйста
https://www.youtube.com/watch?v=jz6e92J0IO8&t=532s
120 2624809
>>24620
А есть перевод?
121 2624846
>>14678 (OP)

>обсуждаем почему нам не нужны дженерики


Потому что их реализовали максимально уебищно?
122 2624943
>>24731

>ютубир скозал

123 2624953
>>24943
Сам возьми да проверь.
124 2624964
>>24846
Особенно кекаю с того, что их все еще нельзя в методах типа использовать
125 2624966
Кто-то юзал депенденси инжекторы в рабочих проектах?
Определяюсь между
https://github.com/uber-go/fx
https://github.com/google/wire
https://github.com/samber/do
или вообще ничего не прикручивать
126 2624983
>>24966
… что бы что?
127 2624994
>>24983
меньше боейлерплейта, больше чистоты в мейн файлике.
Не знаю, в общем-то и хочу попробовать ради попробовать
128 2625003
>>24983
Зависимости же в любом случае должны будут прокидываться через слои кода. Без контейнера количество передаваемых из фукции в функцию зависимостей растет как снежная лавина. Это общее для всех програм на всех языках.
129 2625006
>>25003
Дело даже не в количестве, а в том что какая-то хрень по середине, которая к зависимости никакого отношения не имеет будет знать ее.
130 2625020
>>24966
В структурно очень сложных проектах юзай fx. В простых и средних напрямую инжекти.
гугловый wire херня, а убер ужасно волшебный и неудобный
131 2625254
>>24994
>>25003
Оверкилл и антипаттерн хуйня
132 2625373
>>25254
Если речь о монолите то не оверкил и не антипатерн. Какой нахуй антипатерн, это основа любого фреймворка IoC, composition root. Если в твоей гошке адепты простоты, которая как известно хуже воровства, развели детский сад то это не значит что весь остальной мир - анипатерн.
133 2625873
>>25373
Не корми залетного школьника, анон.
image.png2,3 Мб, 1080x1080
134 2625942
>>25003

>ооп программист

135 2626329
>>25373
Дали блять ждунам бесполезный мусор, говна наелись, а они только рады

мимо
137 2626375
>>26373
Что сказать то хотел?
138 2626377
>>26375
Что ты нихуя не сказал дельного, а только в позу встал. Позёр!
39F94483-05E1-48F1-A235-C063C26ADA87.png721 Кб, 640x640
139 2626379
>>26377

>очередной джун начитавшийся хуйни


Классика
140 2626385
>>26379
А хоть джун или просто вообще мимо прогинга? Почему вам аргументы приводишь, может быть и ошибочные, а вы только квакаете НИНУЖНА! ХУЙНЯ!. Хули вам трудно по пунктам разобрать что не так, если вы такие профи? Как у Омара Хайма:
Мастер просто говорит о сложном,
А подмастерье — сложно о простом.
141 2626411
>>26385
Что не ясно во фразе "оверкилл", как и сказал тот анон выше? Это банально юзлесс мусор

Покормила
142 2626415
>>26411
Это все эвфемизмы для слова ХУЙНЯ, а не аргументы. Что непонятного в словах "для монолита"? Для микросервисов то ежу понятно, что некуда приткнуть этот DI.

Напоил
143 2626416
Ору с вашей хуйни. Зафорсили эту парашу, что серьезные дяди пошли работать и решили немного навести порядок так сразу началось.

https://old.reddit.com/r/golang/comments/1198e5j/golang_isnt_java_and_type_embedding_isnt/
https://old.reddit.com/r/golang/comments/112vfr3/how_to_deal_with_java_developers_polluting_the_go/

Ряяя, так нельзя. Вы НЕПРАВИЛЬНО его используете. Детишки, щас вам немножко покажут кусочек взрослого мира, напишут аналог спринга, научат писать по паттернам. Ну а потом этот язык выкинут нахуй, ибо никому го не нужен и лучше все эти вещи делать на джаве, в которой есть абсолютно всё и не надо изобретать велосипед.
144 2626417
>>26416
Ты из тех, у кого один язык на всю жизнь? Или те, кто учат их >1 года?
146 2626424
>>26385

>Мастер просто говорит о сложном: "НИНУЖНА! ХУЙНЯ!"

147 2626618
>>26416
Я бы лучше застрелился чем писал на джаве и спринге. В го такого фрейма никогда не будет
148 2626701
>>24966

Использовал fx, wire и самописный.

Пришёл к следующему выводу: на монолитах в принципе можно жить в fx, на микросервисах и средних размеров сервисах DI для инверсии зависимостей нафиг не нужен - он только добавляет лишней магии в код. Лучше руками прописать адаптеры-коннекторы и прокинуть куда надо.

В кровавом интерпрайзе я обыно вижу что пилят что-то, заточенное под свою инфраструктуру, и там инициализацию большей части зависимостей вытаскивают в отдельный модуль.
149 2627358
Вот не пойму, почему для мапы можно использовать только встроенные типы? В чём была проблема определить парочку интерфейсов, чтобы пользователи могли определять функции типа Equals(), HashCode() и Compare() и таким образом мапы могли бы работать с любыми типами, реализующими эти интерфейсы?
150 2627395
>>17427
На реакте, как тут можешь сделать https://github.com/stashapp/stash
151 2627469
>>27358
А как ты собираешься это сделать? Тебе нужно будет тогда передавать указатель, а значит еще и следить за ним в маре каким то образом, ибо при передаче копии - тебе пришлось бы делать статическую структуру например, потом свои методы хеширования тоже ебала еще та, решение проблемы коллизий слыхал?
152 2627582
>>27469
type myType {
valueInt int
valueStr string
}

func (t myType) Equals(otherObj myType) bool {
if t.valueInt == otherObj.valueInt && t.valueStr == otherObj.valueStr { return true
}
return false
}

func (t myType) HashCode() int {
return t.valueInt.HashCode() ^ t.valueStr.HashCode()
}
153 2627586
>>27469

Да в принципе можно сделать. Я думаю даже пакеты есть уже (с дженериками). Надо бы поискать

> при передаче копии


Да, это проблема, но проблема не фатальная.

> потом свои методы хеширования


В стандартной библиотеке есть пакет maphash специально для кастомных реализаций хэшмап

> решение проблемы коллизий слыхал


Для решения проблемы колиззий есть сто-пятьсот методов, которые можно посмотреть как из существующих хэшмап того же го, питона или эрланга, так и из каких-нибудь статей по CS
154 2627590
>>27586

Вообще запилить свою хэшмапу на дженериках для type HashKey[E] interface {
Hash(*maphash.Hasher)
Equal(E) bool
} - звучит как прикольная задача для выходных
155 2627615
>>27590
Что тогда мешает просто использовать в тупую указатель? Так везде сделано
156 2627850
>>27358
Потому что это го, тут все через жопу.
157 2627905
>>27615
Причём тут указатель?

Речь о дженерик мапе
https://go.dev/play/p/sGylE0Q9mz3

Иплементируй equal и hash для нужного типа и используй хоть указатели, хоть прямые значения
158 2628036

>2023 год


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



Индустрия, которую мы заслужили...
159 2628042
>>28036
Делай скидку на /pr, тут сидят в основном миддлоджуны. А судя по некоторым постам, так и просто сварщики с фрезеровщиками
160 2628092
>>28042

>миддлоджуны


Чел, хэшмапы на первом-втором курсе проходят, але (алсо напоминаю, что джун - это разработчик с опытом 6-12 месяцев и 1-2 проектами (разработчик без прод опыта называется "стажер"))

Алсо, дело не в /зк, мой коммент относился именно к го и его команде разработки (в основном к самому пайку конечно, нынешние мейнтенеры превозмогают как могут; но в целом го-вей - это именно (нахерачить говна, а потом все переписывать^W^W^W^W^W^W) игнорировать давно исследованные и хорошо известные вещи)
161 2628136
>>28092

> но в целом го-вей - это именно (нахерачить говна, а потом все переписывать^W^W^W^W^W^W) игнорировать давно исследованные и хорошо известные вещи


Насколько бы я сам был не согласен с некоторыми вещами в го, в данном случае ты доебался к очень странному месту. В го есть нормальная хеш мапа, а именно обычный map, который работает для всех сравнимых типов. Желание в качестве ключей использовать всякие объекты в любом случае странное и вас действительно никто не заставляет использовать именно встроенный map, ограничения которого известны - вы вполне можете взять любой другой.
При этом: можно ли было сделать в стандартной мапе поддержку интерфейсов? Можно. Было бы лучше? Ну наверное было бы. Является ли это значимым косяком? В моём случае точно нет, за 5+ работы гошником я не упёрся в это ни разу.

Вот дженерики поздно зарелизили - это да. Зарелизили их неполноценными - это да. Не имплементировали их в стдлиб - это да. Нет нормальных енамов в языке - да. Всё на указателях, которые нихера не безопасные - да. Пол-кода делается на zero values вместо нормального нуллабилити - да. кстати почти всё это решено в rust :3
Вот такие предяъвы я бы почитал. Но почему-то никто их не пишет, вместо этого придираются ко всякой ерунде, то к большим и маленьким буквам (который public / private), то вот к мапам зачем-то.
162 2628301
>>28136
Скорее попытки использовать язык в нише, для которой он и не предусматривался.
для запиливания того же докера это было не нужно
163 2628405
>>28136

>Вот такие предяъвы я бы почитал. Но почему-то никто их не пишет


в каждом треде по несколько раз обсирают женерики и жалуются что никакврасте
164 2628766
>>28136

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


>>нахерачить говна, а потом все переписывать



>Вот такие предяъвы я бы почитал


Так моя предъява и была в том, что дебил в малиновом пинджаке ниасилил параметрический полиморфизм, встал в позу и начал всем доказывать, что НЕНУЖНО и ГОЙ-ВЕЙ, в итоге спустя 10 лет разумеется все равно пришлось все запиливать (кто бы мог подумать), только теперь помимо десяти синтаксисов для объявления переменной будет десять синтаксисов для мапы или чего угодно еще, ведь ГО ИЗ ЭБАУТ СИМПЛИСИТИ. Да, и удачи попользоваться сторонними имплементациями стдлиба в языке, который абсолютно не может в метапрограммирование и в котором даже сраные итераторы гвоздями прибиты к встроенным типам и нет интерфейса, который можно было бы реализовать. Ведь ГО ЭТО ПРОСТОТА, так что давайте будет десять разных синтаксисов для итерации по коллекции. А еще давайте запилим в стдлиб марсианский шаблонизатор, но вот мап и фильтер давай программирувай в каждый проект сам(про обработку ошибок я вообще молчу, ну го просто не является типизированным языком в полном смысле этого слова)

>Вот такие предяъвы я бы почитал.


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

И да, паблик\прайват заглавными буквами - это просто комически плохое решение, лол, пожалуй худшая косметическая фича в истории дизайна япов
164 2628766
>>28136

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


>>нахерачить говна, а потом все переписывать



>Вот такие предяъвы я бы почитал


Так моя предъява и была в том, что дебил в малиновом пинджаке ниасилил параметрический полиморфизм, встал в позу и начал всем доказывать, что НЕНУЖНО и ГОЙ-ВЕЙ, в итоге спустя 10 лет разумеется все равно пришлось все запиливать (кто бы мог подумать), только теперь помимо десяти синтаксисов для объявления переменной будет десять синтаксисов для мапы или чего угодно еще, ведь ГО ИЗ ЭБАУТ СИМПЛИСИТИ. Да, и удачи попользоваться сторонними имплементациями стдлиба в языке, который абсолютно не может в метапрограммирование и в котором даже сраные итераторы гвоздями прибиты к встроенным типам и нет интерфейса, который можно было бы реализовать. Ведь ГО ЭТО ПРОСТОТА, так что давайте будет десять разных синтаксисов для итерации по коллекции. А еще давайте запилим в стдлиб марсианский шаблонизатор, но вот мап и фильтер давай программирувай в каждый проект сам(про обработку ошибок я вообще молчу, ну го просто не является типизированным языком в полном смысле этого слова)

>Вот такие предяъвы я бы почитал.


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

И да, паблик\прайват заглавными буквами - это просто комически плохое решение, лол, пожалуй худшая косметическая фича в истории дизайна япов
165 2628769
а еще помните ШУЕ ППШ синтаксис кондишнл компиляции, лол, и как потом за этим хуесосом остальная команда его переделывала
го вей, хули, накласть говна и потом переделывать


>>28136

>rust


И да, в том и бугурт, что раст - значительно более низкоуровневый язык, и он тупо хуево подходит для области применения ГОвна. ГОвно скорее сравнивать с окамлом, но сука, если сейчас про окамл начнем говорить я точно нажрусь нахуй
166 2629008
а вот допустим у меня есть структ на 200-300 байт. вы хотите чтобы я его вернул как значение или поинтер?
я вот лично не хочу чтобы в местах вызова была мысль в задней части головной корочки что эта хуйня может оказаться nilом. ну и дергается эта логика ну раз 10-100 в день т.е. по сути на перф похуй. но бля меня мучает вопрос а на самом ли деле rule of thumb што на большие структы нужно возвращать поинтеры это не залупа собачья?

>inb4 духота про профайлинг

167 2629072
>>28766

> Так моя предъява и была в том, что дебил в малиновом пинджаке ниасилил параметрический полиморфизм, встал в позу и начал всем доказывать, что НЕНУЖНО и ГОЙ-ВЕЙ, в итоге спустя 10 лет разумеется все равно пришлось все запиливать (кто бы мог подумать


Я бы мог тебе рассказать, что го это ни разу не первый язык Робба Пайка и что до этого у него во всех языках были дженерики и поэтому они для него более чем осилябельны. Но зачем что-то доказывать фанатикам?
168 2629074
>>29008
На маленьких объемах тебе вообще похуй, всё что угодно будет работать быстро. А на больших объемах, если у тебя ещё и стек вызовов большой, то за такое большое количество копирований тебе никто спасибо не скажет.
Но вообще тут нужен баланс, слишком большое количество указателей это тоже неприятно и гц может начать захлёбываться.

Вообще обычно правила такие, что маленькие структуры можн опередавать и по значению, а большие всё же лучше через указатели.
Да, это небезопасно, но ты как бы на небезопасном языке пишешь, смирись или выбирай другой язык.
169 2629091
>>29074
слыш так бля епта. ты же повторил что я в посте упомянул про правило большого пальца но только обосрал язык за небезопасность
170 2629096
>>29091
Я тебе развернуто объяснил, что на маленьких объемах похуй, а на больших будет заметно.
171 2629321
Мне почему-то Голанг напоминает больше язык Перл, чем какой-нибудь Си. Здесь практически тот же подход: простые вещи делаются просто, а сложные сделать возможно. Также, как и Перл, Голанг не стал "пахнуть" лучше со временем.
172 2629433
>>29008
Нужно изменять - возвращай указатель, ненужно изменять - возвращай копию.
Ну либо везде в проекте возвращай указатель (при условии что на производительность похуй (если не похуй то >духота про профайлинг)).
173 2629441
>>29072

>что до этого у него во всех языках были дженерики


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

>поэтому они для него более чем осилябельны


Еще раз, можно было с самого начала подумать, добавить параметрический полиморфизм (не "дженерики") и зафиксировать синтаксис с учетом возможности дальнейшего расширения. Вместо этого они: а) встали в позу с мантрами про го-вей и симплисити; б) спустя 10 лет сделали ровно то, о чем им говорили с самого начала (и то недоделали), но теперь с добавлением 9000 разных синтаксисов и необходимостью переписывать кучу либ (да-да, формально обратная совместимость не нарушена, возьмите конфетку блядь). К тому же они сами в своем блоге писали о том, что были не уверены, как реализовать дженерики в го, но видимо для тебя это мнение "фанатиков".
Алсо, если ты смотрел первые гугловские презентации пайка, то сам мог видеть, что он хуево ориентируется в плт и путается в простых вещах
174 2630008
Если для реализации стандартной библиотеки, нужно привлекать магию компилятора - это хуевый дизайн языка.
175 2630015
>>28136

>В моём случае точно нет, за 5+ работы гошником я не упёрся в это ни разу


В пистоне я очень часто делал сеты для проверок уже имеющихся объектов. Для своего класса было достаточно реализовать пару магических методов. В го мне сказали, что все это нинужна.
176 2630414
>>29096
ну хорошо што про размер стека упомянул, но например такая хуйня (на зашкваренном медиуме) есть https://medium.com/@philpearl/bad-go-pointer-returns-340f2da8289
(еще результаты бенча у меня нихуя не сходятся со статьей пиздос лмао)
и наверное нужно понять когда объемы считать большими а когда нет........ вот допустим у меня в структе там 20 int64 и 20 строк = 40*8 байт. кажется что бля достаточно большой но так ли это мистер фриман?
177 2630428
>>29433

>Нужно изменять - возвращай указатель, ненужно изменять - возвращай копию.


это же больше к ресиверам в методах относится? изменение полей же не переаллоцирует структ
178 2630455
>>28766

>И да, паблик\прайват заглавными буквами - это просто комически плохое решение, лол, пожалуй худшая косметическая фича в истории дизайна япов


__такой_хуйни_навалом()
180 2631160
>>30414

>результаты бенча не сходятся


Так у тебя и процессор другой, шиз
181 2631939
Сейчас в очередной раз поработал на проекте, где активно используется uber/fx и в очередной раз подтвердил свой опыт, что это удобная либа с хорошим апи, но при этом невероятно мерзотно реализованная внутри, как впрочем и всё остальное у убера. Ну вот прям видно, что писали джависты. Всё в десяти обертках, всё максимально абстрактно называется и максимально неочевидным образом происходит.
Я там думал дописать кое-чего и им потом реквест создать - так выяснилось, там уровней сложности даже несколько. Интуитивно кажется, что fx должен быть тонкой обёрткой вокруг dig - но на самом деле нихера и там по сути два контейнера, один собственно fx, а второй уже dig. Зачем так сделано - непонятно.

Короче, никогда не используйте код от убера в качестве примеров, так как делают они- делать не надо. Прочих их либ это тоже касается, они даже из сраного логгера, который как бы не рокет сайнс ни разу, ухитрились сделать самолёт.
182 2631941
>>24090
ты проебал немного в условии цикла.
Ты пишешь "1<5", т.е. если переводить на человеческий - "ПОКА 1 (АДИН!!!) меньше 5 то {Действиие}", у тебя единица всегда меньше пяти, т.е. всегда TRUE.

Тебе нужно писать не 1, а переменную i.

Как только переменная i станет больше или равно 5, то будет нужный тебе результат.
183 2632065
>>31160
Хватит следить за мной
184 2632107
>>31939
Спорно, но спасибо за мнение, годный постинг.
185 2632117
>>31939
Это потому что Го не предназначен для DI, а не потому что код писали """неправильные программисты""". Гугловый DI выглядит еще уебищнее чем uber/fx, потому что - ненужно. Пишите маленькие сервисы и инжектите все руками в инит().
186 2632341
>>32117
Ты не прав и я как раз писал о другом. fx можно использовать и это нормально выглядит в итоге, особенно удобно, когда у тебя много разных тестов - и тогда ты в каждом пакете отдельно объявляешь var Module = fx.Provide(...) и потом нужные модули подключаешь в контейнер, выглядит похоже на аннотации в той же джаве.

Я же писал о том, что fx хуёво реализован под капотом. Невозможно ничего понять. Я сам писал рантайм di контейнеры и знаю о чём говорю, можно куда качественнее код написать.

> Пишите маленькие сервисы


Вот это распространённое заблуждение, как и то, что "Го - язык для микросервисов". Не бывает в жизни исключительно маленьких сервисов, или ты делаешь что-то не так. Бизнес-логика всегда сложная и разветвленная, у тебя всегда много сценариев и хотелок, в рамках одного бизнес-юнита.

У меня было такое неоднократно, к примеру, ты начинаешь писать сервис для какого-нибудь скоринга пользователей и начинается: ты читаешь несколько топиков кафки, чтобы получать все необходимые эвенты. Ты отдаешь паблик апи для фронта, ты отдаешь интернал апи для каких-то внутренних бэкендов и админки, у тебя есть планировщик, который подводит какие-то результаты, у тебя есть разные рейтинги и разные стратегии их расчета, которые применяются в зависимости от необходимой фазы луны, это всё конфигурируется и тд и тп. Если разбить это на миллион grpc сервисов, то ты просто получишь распределенный монолит и будет ещё больнее.

> инжектите все руками в инит


это нормально работает в случае одной main или какого-то небольшого их количества. Но когда у тебя к примеру появляются тесты, а особенно интеграционники, то уже становится больно, потому что каждый тест требует той же инициализации, но периодически со своими особенностями, всякими моками и заглушками. В случае с ручным инитом это приводит к адовому копипасту очень быстро.
Ну и самих команд может быть дофига.
Как вариант, можно делать ручной di в main и отдельно юзать контейнер в тестах и это тоже ок.
187 2632777
Ща сидел в толчке и вспомнил малолетнего долбоёба гиперактивного из вашей тусовки. Чё с ним стало?
188 2632891
>>32341

>Бизнес-логика сложная


Может тогда просто взять полноценный язык (да с полноценной системой типов) для написания сложной бизнес-логики? Ах да, ведь мы уже наняли команду 300кб\наносеков-гошников, ну тогда ладно, авось спустя полгода что-нибудь и высрут. Зато памяти сэкономили.
189 2633009
>>32891
Го нормальный язык для написания бизнес-логики, не пизди. Интерфейсы есть, типы есть, функции есть, условия есть. В целом это минимальный набор. Не идеальный, но достаточный, чтобы писать сложную логику. Писал 100500 сложных проектов на го и именно с го проблем особо не было, брат жив. Дженерики побогаче бы конечно и в стдлиб побольше всяких filter() и map(), но это уже хотелки.

Существует множество бизнес областей (да почти все на самом деле), где достаточно развесистая логика, чтобы она вылезала за 100к строк, но при этом она не настолько сложная, чтобы ради этого начинать заниматься метапрограммированием. Более того, если ваша логика заставляет вас заниматься метапрограммированием - то возможно у вас джава головного мозга и вы зря нафигачили абстраций поверх абстракций.
190 2633084
>>33009
Конечно же, любого тьюринг-полного языка хватит чтобы описать любую бизнеслогику! Брейнфак форевер!
191 2633086
>>33084
Он же сказал "не идеальный"
192 2633501
Прочитал про срезы и что-то у меня пукан разорвало от них. Это ж надо было выдумать настолько нелогичную и неудобную штуку с тонной подводных камней в использовании! Жесть просто!
193 2633505
>>33501
Что конкретно нелогично? В го туре сказано, что это просто указатель на основной массив, как и сказано то, что при расширении он уже перестанет быть указателем, что логично, ведь иначе ты не сможешь добавить в него элементы, ибо length > capacity, а значит нужно аллоцировать с нуля, что конкретно тут не логично?
image.png298 Кб, 473x500
194 2633549
>>33501

>срезы

195 2633559
я запускаю горутину и иду пить кофе
без остановки вертит сук мой нетполлер
селектом взял твои каналы за яичники
контекст отменится из них выйдет ошибка

коллега не заюзал gofmt раскрошил ебало
второй роба пайка не уважал раскрошил ебало
написал женерик функцию раскрошить ебало
убил всех джавистов но мне этого мало

мне этого мало

рублю бабло
рублю бабло
рублю бабло
на го

рублю бабло
рублю бабло
рублю бабло
на го
196 2633564
>>33505
Нужно было делать две сущности: срез как неизменяемый указатель на массив со строго фиксированными размерностью и ёмкость, и вторую - динамический массив, где нам без разницы что там внутри, а важно лишь, чтобы он хранил наши значения.
197 2633580
>>33564
разве не так сделано?
Массивы с детерминированым количеством элементов
Динамический слайс на базе массивов
198 2633586
>>33580
Или ты хочешь нетипизированную фигню как массивы в пхп?
199 2633610
>>33580
И чем они отличаются? Тип-то один. Нельзя написать допустим так:
func (final pArray []int) {
append(pArray, 5) //error!!!
}
200 2633615
>>33549
Слово "митинг" если чё тоже было широко употребимо в прошлом веке, уточка.
201 2633623
>>33610
Напиши аналог тайпскрипта для голанга, чтобы он компилировал расширенную статически строготипизированную версию голанга в читабельный голанг.
suisei huh.png336 Кб, 526x526
202 2633632
>>33610

>Тип-то один

203 2633635
>>33623
Сразу набегут тысячи хомячков и скажут, что не нужны нам енти ваши монады, писали err != nil и будем писать

к тому же нахера компилироваться в голанг, у него же инфраструктура по факту куцая
204 2633783
>>33501
Это нормальная абстракция поверх массивов, к примеру в расте тоже есть слайсы и они работают почти так же.
Неочевидность здесь исходит просто из постановки задачи: ты хочешь иметь непрерывный блок значений в памяти и обращаться к нему, как к переменной - и при этом хочешь уметь аппендить в него значаения сверх лимита. Это автоматически означает, что тебе нужно перевыделить память и переключить переменную на новый блок в памяти.
Это же тебе не список, который по всей куче может быть размазан и который потом gc заебется сканировать.

К гошной реализации можно придраться только с точки зрения дизайна функции append.

Но в реальности ты проблем с этим не испытываешь. Просто держи в голове два правила:
1) Вообще всегда присваивай результат аппенда в тот же слайс: foo = append(foo, ...) - кстати есть линтеры, которые за этим следят.
2) По возможности не пытайся менять саму переменную слайса, всегда возвращай новое значнение. Ну примерно как функция append делает. С мапами кстати аналогично.
205 2633806
>>33783
с мапами аналогично что
206 2633821
207 2634002
>>33635

>к тому же нахера компилироваться в голанг, у него же инфраструктура по факту куцая


Быстрый ГЦ, горутины с вытесняющей многозадачностью, нативный бинарник без VM, есть ансейф, так что при желании можно и 2 указателя сложить. По первым двум пунктам только Эрланг может чем-то подобным похвастаться. Если бы не хуевый дизайн языка, то вообще был бы топ язык для прикладных приложений.
208 2634013
>>33783
Линейные типы? Не, не слышали. У нас же ПРОСТОЙ язык, нужно просто держать в голове два 9000 правил.
209 2634016
>>34002
Ну если совсем без траллинга, то в целом я согласен. Но я про куцесть скорее про либы писал - их все-таки значительно меньше и они более худшего качества, чем елсевере.

</совсембезтроллинга> Да и к тому же размер бинарников у го и граальвм почти одинаковый, а если не видно разницы, то зачем жрать ГОвно?
210 2634478
>>15719
ололошеньки - лоло

>Dependabot no longer alerts on vulnerabilities for dependencies found in go.sum files.



https://github.blog/changelog/2023-03-07-dependency-graph-removes-go-sum-support/
211 2634506
>>34478
Потому что go.sum может показывать несколько версий сразу, например если ты используешь third-party пекейджы, потому лучше смотреть только в go.mod
primer.jpg75 Кб, 727x455
212 2634629
Сейчас копался в старых файлах и случайно наткнулся на старый скрин для двача. Оказывается, первую программу на голанге я написал в 2017.
213 2634668
>>34016

>Да и к тому же размер бинарников у го и граальвм почти одинаковый, а если не видно разницы, то зачем жрать ГОвно?


Если лум и правда реализует все обещанные фичи, то может и правда будет конкуренция.

С другой стороны многих Го подкупает кажущейся простотой. до того самого момента, пока проект не разрастётся и простота не начнет мешать.
214 2634720
>>34506
че ты мне тут корявого лепишь?
Что тут произошло:
Секурити-офицеры сначала родили какую-то машинку, но потом обосрались и потом откатили свои ахуенные истории.
215 2634741
>>34720
Буквально коммент депендабота

> go.sum files are not lock files but a log of all packages downloaded by Go when building a project. They may include multiple versions of a dependency, which may result in false positive Dependabot alerts for a vulnerable version that isn't actually used in the project.

216 2634996
>>34668
Simple != easy. Никакого симпл димпл в голанге и близко нет, такое же минное поле из костылей, как и кресты, просто по объему меньше.

А лум - да, уж не знаю, доживу ли до того момента, как они все допилят.
217 2635771
>>34996

>Никакого симпл димпл в голанге и близко нет, такое же минное поле из костылей, как и кресты, просто по объему меньше.


Го легок для чтения, с ним практически никогда не возникает вопросов "что эта функция делает" и "как реализовать эту функцию" всё примитивно и прямолинейно. Просто берёшь и кодишь. Много кодишь потому что язык многословней даже Джавы.
218 2635778
>>35771
Да. Тут большой плюс в гошке, что можно просто лазить по искодникам используемых пакетов они легко читаются. Не в пример даже Ларавелю какому-нибудь с его фасадами. Хер пойми откуда он что берет и куда перекладывает... Только дебагером.

мимо пыхарь
219 2635784
>>35778
Хорошо что деды которые гошку проектировали не стали туда макросы пихать как в своей любимой сишке. Или им зумер начальник из гугла запретил это делать.
220 2635941
>>35771

>Го легок для чтения


Язык не может быть "легок" или "сложен" для чтения. Легко или сложно читать может быть конкретный код. На любом языке можно написать как трудный для понимания код, так и легкий для понимания код.

Бой некорректному мышлению!
221 2635971
>>35941
Коректность не должна превращаться в шизу, игнорируя подразумеваемый контекст. Обсуждается средняя температура по больнице - читабельность языка. Пока ты не устроишься на проект, тебе его никто не даст почитать. Выберешь трудночитаемый язык - придется либо тянуть лямку, либо бегать от проекта к проекту теряя время на испытательном сроке.
222 2636074
>>35971

>трудночитаемый язык


Опиши, как (можно на глазок) померять трудночитаемость языка, и почему условный го трудночитаемей условной джавы.
223 2636130
>>35941
язык можно назвать легким для чтения, если весь/почти весь код, написанный на нём, легок для чтения. это называется метонимия
224 2636149
>>36130

>если весь/почти весь код, написанный на нём, легок для чтения


Ну да, а если я закину на жидхаб 9000 тонн говнокода на языкнейм, то это сразу магически изменит собственные качества языкнейма. Давайте-ка без вот этой глупой гуманитарщины, язык - это формальная система.
225 2636156
>>36149
Шизам, закройся!
226 2636318
>>36149

>Ну да, а если я закину на жидхаб 9000 тонн говнокода на языкнейм, то это сразу магически изменит собственные качества языкнейма


strawman

>Давайте-ка без вот этой глупой гуманитарщины, язык - это формальная система


это дискас на форуме где принят разговорный стиль переписки, алё. доебываться до того, что "кипит не чайник, кипит вода в чайнике" это уровень б или уже выше?
227 2636444
Что лучше использовать для методов: приемники указателей или приемники значений?
228 2636662
Есть ли в го джава лайк стримы?
229 2636742
>>36444
В общем и целом - лучше указатели. Они универсальньнее с точки зрения типов и быстрее
230 2636745
>>36662
Нет, но думаю появятся
231 2636746
>>35941

Ну удачи написать имедж борду на брейнфаке, лел
232 2636750
>>36662
Есть такое https://github.com/ahmetb/go-linq джавовые стримы спизжены с linq
233 2636753
>>33635

> Сразу набегут тысячи хомячков и скажут, что не нужны нам енти ваши монады, писали err != nil и будем писать



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

Выбор языка, кстати, тоже вопрос скорее религии
234 2636759
>>36742
А если я хочу показать, что приемник не будет изменяться в методе?
235 2636790
>>36759
чтобы что? это не const. назови метод нормально и всем будет понятно, что он ресивер не меняет. в местах вызова все равно в 99% случаев не видно какой ресивер, разве что когда в интерфейс пытаешься положить
236 2636897
>>36318
Я и не доебываюсь к тому, о чем ты пишешь.

>>36746
Можно еще пожелать удачи с написанием модулей ядра на жаваскрипе, но зачем?
237 2636902
>>36753
Отнюдь.

Более того, гарантированно чистые функции - это карго культ для фанатиков.

За исключением 0.0001% случаев, где действительно нужна формальная верификация. Но и там в систему типов это тащить необязательно. Алсо, напоминаю про unsafePerformIO; так что там, хаскель с кого карго-культирует?
238 2636904
>>36759
Напиши комментарий. Это го, не пытайся сделать из него выразительный язык, он таковым не является. Лучше по умолчанию делай указатели.
239 2636942
>>36742

>быстрее


Ты скозал?
Процессору похуй, выделять 4 байта на указатель или 16 на структуру, будет одинаково быстро. (Кроме редких моментов с очень большими структурами, ОЧЕНЬ)

Во всем мире принято ставить указатель в принимаемый тип только основываясь на то, будет ли он изменяться внутри или нет
16647305185691.png1,2 Мб, 1080x1920
240 2636978
Привет, помогач!
В мои руки попал проект с .go в конце.
Нужна среда разработки, чтобы запустить программу и потрогать её внутри
241 2636985
>>36942
Еще не забываем про то, что указатели нужно еще и разименовывать, а значит уже больше действий, чем просто передать копию

К счастью, для такого есть даже отдельные инструкции
242 2637048
>>36978
Скачай сам го, а проект можно открыть в любом тестовом редакторе с подсветкой синтаксиса. Самая популярная среда - VS Code, ещё есть GoLand, но она платная.
image.png230 Кб, 1298x719
243 2637114
>>36750

>Есть такое https://github.com/ahmetb/go-linq


Нечитабельное Go-вно.

>джавовые стримы спизжены с linq


Какие же шарперы тупые, это пиздец просто! Общая CS эрудиция отсутствует как класс.
Стримы в джаве чисто библиотечная вещь, никаких новых языковых конструкций в нем нет. В отличии от linq который сахар на сахаре, с сахарным сиропом. А сама идея идет из функциональщиных языков, мэп-редьюс, вот это все.
244 2637508
>>37114
Оно не только нечитабельное, оно еще и медленное и нетипобезопасное. Типичный ГОвнокод тащем-то.

>Какие же шарперы тупые, это пиздец просто!


При этом сам шарп\дотнет ресерчат довольно крутые чуваки, у них там и эфшарп, и приблуды для формальных доказательств, да и в целом рнд сильнейший. Такая вот ирония.

>>36750
Джавовые стримы основаны в первую очередь на стандартной библиотеке кложи, т.к. главный архитектор джавы слегка фанбоит по кложе. Но в целом это все известные чуть ли не с 80-ых паттерны ФП.
245 2638184
>>14678 (OP)
Если легаси хуитка, которая деплоится в несколько инстансов и отвечает по REST API. Только один инстанс может обработать запрос от клиента. Остальные откидывают кастомную жысонину, мол "не могу обработать". Типа мастер есть. Вот как лучше всего писать клиент к такой ебанине, если известны адреса каждого инстанса? Или это можно решить на уровне инфраструктуры и спрятать все это говно за какой-нибудь хитрой проксей?
246 2638212
>>38184
а нахуй они так сделали?

>Вот как лучше всего писать клиент к такой ебанине, если известны адреса каждого инстанса


ну просто делаешь обертку для хттп.клиента (или в него кастомный транспорт закидываешь, который тупо обертка над дефолтным с логикой фейловера). если запрос фейлится, то идешь раунд робином, пока один из адресов не ответит. если ответил, то дефолтишься на него.

>Или это можно решить на уровне инфраструктуры и спрятать все это говно за какой-нибудь хитрой проксей?


а хули они так не сделали?
247 2638249
>>38212
Не хочу велосипедить клиент, да еще и такую хуету писать с перебором. Хотелось бы это решить как-то изящнее. Изначально все писали долбаебы-студенты, которых наняли за копейки.
248 2638647
Кому-нибудь удалось написать свой веб-сервер? Ну не просто, который отдаёт всем хелловорлд, а полноценный, который можно использовать для написания коммерческих веб-приложений. Или всё-таки никто сам такое не пишет, а используют готовые фреймворки как в других языках?
249 2638656
>>38647
А смысол? Разве для учебных целей.
250 2638662
>>38656
Разве на работе не пишут веб-приложения? Мне казалось это основное направление го-разработки.
251 2638672
>>38662
Ты путаешь веб-сервер, который сидит жопой в интернет и в современных условиях работает реверс проксей, и аппликейшен сервер, который уже работает с твоим приложением.
Писать самому второй, а тем более первый это бессмысленная задача, потому что их дохуя и они написаны и вылизаны людьми поумнее тебя.
252 2638766
>>38672
Дак что в итоге пишут на го?
253 2638791
>>38647

>Кому-нибудь удалось написать свой веб-сервер? Ну не просто, который отдаёт всем хелловорлд, а полноценный, который можно использовать для написания коммерческих веб-приложений


разработчикам го))
254 2638845
Сейчас читаю книжку Адама Фримана Pro Go и дошёл, где он начал писать платформу для своего онлайн-магазина. Если до этого всё было понятно, то вот когда он начал заворачивать многослойные сервисы, то у меня мозг отключился. Так реально пишут или это он превращает голанг в асп.нет со всякими внедрениями зависимостей? Я вот не понимаю, нафига городить такую хренотень, чтобы потом в одном месте написать одну строчку вместо двух? Типа глядите как классно: я могу пихать в сервисы любой тип, а он там сам всё раскрутит и создаст.
255 2638910
>>38845

>Adam Freeman is an experienced IT professional who has held senior


positions in a range of companies, most recently serving as chief
technology officer and chief operating officer of a global bank. Now retired, he spends his time writing
у челика жава головного мозга, не суди строго
256 2638920
>>38910
ну и челик который ревьюит просто картина маслом

>senior consultant and a senior analyst/developer using Microsoft technologies, a Microsoft Certified Solution Developer for .NET, a Microsoft Certified Application Developer for .NET, a Microsoft Certified Professional

257 2639007
>>38845

>Сейчас читаю книжку Адама Фримана Pro Go


>Apress


Чел... Книгами этого издательства только подтираться или на растопку печки. Читай книги от Manning, O'Reilly или хотя бы The Pragmatic Bookshelf.
258 2639014
>>38845
Почитай для контекста любые статьи по архитектуре, тысячи их.
259 2639027
>>37508

>При этом сам шарп\дотнет ресерчат довольно крутые чуваки, у них там и эфшарп, и приблуды для формальных доказательств, да и в целом рнд сильнейший. Такая вот ирония.


Нет никакой иронии, это всё закономерно. Хороший дизайн языка, это умение добавлять нужные фичи и не добавлять малополезные фичи, это умение выбирать такую реализацию, чтобы язык оставался консистентеым по стилю.
Есть говей когда нужные фичи не добавляются до тех пор пока уже станет невозможно нормально разрабатывать на языке. Есть шарпвей когда в язык тащат все прикольные фичи которые можно реализовать. Проблема шарпа не в том что его авторы криворукие, а в том что у них нет чувства меры.
260 2639034
>>39027
Нет никакой иронии, это всё закономерно. Хорошее свойство вещи типа N, это наличие X и отсутствие Y. В подтипе N1 типа N - X минимально, а в подтипе N2 типа N - Y максимально. Проблема N2 в том что производитель N2 добавил слишком много Y.
261 2639190
>>39027
Ну зато там есть Blazor и можно написать фронт на сишарпе, а на голанге так нельзя. Надо будет учить жс/тс и фреймворк реакт/ангуляр/вуе.
262 2639287
>>39027
не знаю, по мне так в шарпе не так уж и много лишнего, с чувством меры все в порядке.
263 2639443
>>39190

>Ну зато там есть Blazor и можно написать фронт на сишарпе, а на голанге так нельзя.


Говно какое-то. Или уж делать нормальный десктоп или не ебать мозг и делать на базе Электрона и веб технологий, главное преимущество которого это возможность реюзать 99% кода для веб версии и независимость от бекенда. А так GWT для C# получается.

>>39287

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


1. LINQ это совершенно чужеродная с т.з. синтаксиса конструкция. Да еще неочевидно как работающая - как понять как будет делаться джоин 5 коллекций?
2. async/await - создает специальный класс async функций которые можно вызывать только из async функций или специальным образом. В Го можно любуй функцию запустить как горотину там есть вопросы с возвратом ответа, но все решаемо. А теперь этого мало, надо виртуальные треды делать.
3. Фич много, как правило есть больше одного способа реализовать фичу, команде приходится договариваться об общих подходах.
264 2639448
почему учить Го а не Раст?
265 2639463
>>39448
А мы откуда знаем? Учи то, что нужно по потребностям
266 2639470
>>39448
хз. у нас на го позицию можно устроиться пройдя собес на другом языке вроде пыхи/петона. с растом хз получится ли такое.
267 2639529
>>38791
Что-то не заметил в пакете http промежуточного программного обеспечения.
268 2639708
>>39529
Что ты имеешь под

>промежуточного ПО


Миддлвари что ли? Так это тебе роутер нужен
269 2639744
>>39529
ну там же есть http.Server. почти на каждой работке его и юзали для создания коммерческих приложений
270 2639845
>>39463

>потребностям


1млн руб/мес или 400к+ юсд за пределами снг
271 2639940
>>39845
И что ты хотел сказать этими цифрами?
272 2639982
>>39448
Учи АК и не еби нам мозги.
273 2640175
>>39448
Смотри, чтобы найти работу на расте, нужно быть умненьким. Раз ты задаешь такие вопросы, то вполне очевидно, что ты тупенький. Поэтому если возьмешься за раст, то никогда не найдешь работу, а вот с го у тебя какие-то шансы все-таки есть, ибо го - язык для говнокодинга.
274 2640499
>>39443
Дурак
275 2640587
>>40499
Ой ой! Задели нежную лубовь неофита к сишарпу...
276 2640637
>>38212

>а нахуй они так сделали?


Вот у вас есть контроллер, который обрабатывает поступающие запросы. На каждый запрос он получает из параметров инстанс переменную, например "@var". Её значение уникально для каждого запроса. Вот так приложение выполняет один и тот же код, но для разных входящих данных.
При дефолтных настройках вашего сервера, запросы встают в очередь и выполняются последовательно. Но если нагрузка начинает превышать возможности такого решения, то можно начать запускать приложение в нескольких инстансах. Это подразумевает выполнение одного и тоже кода в нескольких процессах (воркеры) или даже на разных серверах.
Пример: сервер распределяющий нагрузку (1 сервер) разделяет запросы на несколько инстансов (n серверов), где запущено одно и тоже приложение, но они все обращаются к одной базе (1 сервер).
277 2640639
>>38184
Очевидно на мастер истансе!
278 2640643
>>40587
Ты тупой и необразованный, это даже не требуется доказывать.
279 2640715
>>40643
Да вы оба не блещете умом.
280 2640817
раст отстой сишарп параша
гоферы хой победа наша
1677584001143329.png205 Кб, 351x310
281 2640820
>>40637
так остальные инстансы же не работают
282 2640947
>>40637
Ты не понял. У тебя N инстансов одного сервиса. Только один из них может обрабатывать запросы по REST API. Остальные тебе вернут ошибку. Т.е. там роли у такого "кластера", где один мастер, который все запросы обрабатывает.
283 2641919
Вкатываюсь в го. Поясните по хадркору, как жить без дженерик методов? Вот как - как жить? Плодить копипасту? Вот у меня есть задача перекладыания сущностей их источника в хранилище. Ну типичная же, да? Ну не хочу я писать два десятка вариантов кода, отличающихся именем сущности. Казалось бы, Родина дала тебе дженерики! Но нихуя. Я хочу использовать DI и через него получать базу, логгер и прочую хуйню. А как мне таскать DI контейнер? Глобальной переменной, что ли?
284 2641941
>>41919
Чем тебя джава не устраивает?
image.png1007 Кб, 1200x1200
285 2641951
286 2641964
>>41941
Меня всем устраивает шарп, но у меня задача писать на го :(
>>41951
Про type safety я вообще молчу. Мне бы хоть от копипасты избавиться :(
287 2642070
>>41964
Я думал дотнетчиков заставляют фронт учить, а не другой язык для бэкенда
288 2642178
>>42070
Я вообще на говне мамонта писал. Но меня заставляют на го. Мне нравится шарп,, но мне платят за то, чтобы я учил го.
289 2642337
Кажется, я понял дао Го. Дженерики не нужны, потому что всё равно типобезопасоности нет. Тупо заворачиваем всё в структуры interface{} и не лоъматим бабушку :(
290 2642551
Ты дрянь, лишь это слово псособно обидеть.
Ты дрянь, я не могу тебя любить, но не хочу ненавидеть.
Ты не тот инструмент, на котором я способен писать.

type TEntityDTD interface {
ContractorDTO
}
type TEntityXML interface {
ContractorXML
}
type Entity[D TEntityDTD, X TEntityXML] interface {
getXML() X
dtoMapper()
D
}
Теперь попытаемся имплементировать метод.
func (e Entity[ContractorDTO, ContractorXML]) getXML() ContractorXML {
return &ContractorXML{}
}

Invalid receiver type Entity[ContractorDTO, ContractorXML] (Entity[ContractorDTO, ContractorXML] is an interface type)
291 2642570
>>41919

>Плодить копипасту?


Да, это же ГО - язык для ГОвнокода. Но дженерики (кастрированные) уже джва релиза назад завезли - теперь осталось только переписать все библиотеки, ура.

>Вот у меня есть задача перекладыания сущностей их источника в хранилище.


Если хочешь заморочиться, то можешь написать кодогенератор (см. go generate). Но разумеется так как мы в ГО треде, а ГО - это язык для ГОвнокода, тебе придется прям парсить и генерить текстовые файлы, т.к. про метапрограммирование и лисп-макросы роб пайк не слышал инб4: слышал но у него гой-вей!!1. Поэтому смотри сам, что проще.

В целом, при написании го главное поменять отношение. Не пытайся сделать "правильно" или "красиво", ну или "эффективно". Нахреначь как попало чтоб оно хоть как-то работало, притом поддержку желательно скинуть другой команде или свеженанятому джуну. Если какой-нибудь хер из другой команды решит на тебя позалупаться, то отвечай, что он хуй и ничего не понимает, а твой код соответствует the go way.
292 2642624
>>42570

> дженерики (кастрированные) уже джва релиза назад завезли


За два дня я сделал вывод, что дженерики в го завезли примерно так же, как альтернативную военную службу в России. Ты должен пожалеть об этом.
293 2643438
>>42624
А какие дженерики тебе нужны? Чем гошные хуже джавовых? Что такого ты хочешь с ними делать?
294 2643498
>>43438
Давай начнём с дженерик методов. Продолжим мапой без interface{}.
Я вообще не понимаю, почему го получил такую бешеную популярность. Что в нём суперкрутого? Лаконичный синтаксис? На да, на том же шарпе это пишется более жирно. Но блин, я ещё не встречал языка, на котором я должен неделю думать, как мне выразить мысль, который ставит мне палки в колёса - туда нельзя, сюда нельзя, но если вы возьмёте void, oops I mean interface{}.
Блядь, в 21 веке использовать void
! Дийкстра в гробу вертится, замедляя вращение Земли.
295 2643505
>>43498
Я сегодня про горутины и замыкания читал. Там вообще вынос мозга! К примеру, счётчик цикла горутина неправильно читает, а вот если его присвоить переменной внутри цикла, то уже всё норм.
296 2643506
>>42624
Ты не понимаешь. Это го-вей. Сейчас все перепишут весь код на кастрированные дженерики, потом еще через 5-10 лет роб пайк прочитает какой-нибудь пейпер про тайпклассы и добавит дженерик методы, чтобы все переписали весь код еще раз. Кодинг крутится, лавешки мутятся, ВВП растет. Смекаешь? Понимать надо.
297 2643509
>>43498

>Я вообще не понимаю, почему го получил такую бешеную популярность.


Ты не поверишь, но примерно 90% ПРОГРАММИСТОВ оценивают новый язык ровно по двум вещам:
1) синтаксису на примере хелловорлда
2) логотипу

Так что пиар гугла + логотип. Буквально это. Такая вот индустрия, добро пожаловать.
справедливости ради еще рантайм с гц и ксп из коробки в 2008 году
298 2643510
>>43505

>счётчик цикла горутина неправильно читает, а вот если его присвоить переменной внутри цикла


это ты еще интерфейсы с нил не сравнивал Ты не понимаешь. Го - это простой язык. Го-вей - это ПРОСТОТА. Ну мне так чувак в пинджаке по телеютубу сказал. А ты кто такой? Вот он в гугле работает, а ты русский фашист хуесос с двачей.
299 2643533
>>43509
Не могу вспомнить, кто сказал, что простые вещи должны быть простыми, а сложные - возможными. Вот го отлично справляется с первым. И никак - со вторым.
МЕня вымораживают коллекции с interface{}. Меня вообще вымораживают здешние коллекции - они НЕ ПРОСТЫЕ. Они простые в Perl, Они слишком простые в PHP. Они достаточно удобные в дабе и шарпе. Они блать ебанутые в go.
Интерфейсы вроде бы есть, но я пока не познал их дао. Но в стандартной библиотекте их нет. Нет никого ILogger или IDbCOntext. Просто в голове не укладывается - вот этим люди обмазываются и просят ещё!
300 2643545
>>43498
Сука, он мне вместо войд-звёздочка курсив сделал :(.
301 2644072
>>43533

>Вот го отлично справляется с первым.


>десять синтаксисов на каждую фичу


>неоднозначный парсинг после введение дженериков


>тонны подводных камней, некоторые из которых уже упомянуты выше по треду


>вообще лень опять перечислять очевидное


Нет, не справляется. Вот scheme - справляется, например. Да даже простихоспати луа какая-нибудь и то справляется

>ILogger


>IDbCOntext


А зачем ставить букву I перед названием интерфейса иметь это в стандартной библиотеке?
302 2644272
>>24966
За аж неделю изучения языка пришел к выводу, что в го di не имеет смысла. В нем не принят полиморфизм, не принято делать стандартные абстрактные классы или интерфейсы. Без них di я вляется изощрённым способом почесать левой пяткой правое ухо.
303 2644430
>>24966
не то чтобы совсем нинужно, но вообще нинужно. если там бля ну хендлеры ходят в сервисы, сервисы ходят в репозитории, репозитории ходят в бд, то инжектор говорит о чем? о том, что ребята скоро будут распиливать свой монолит, т.к. дохуя говна завезли и пытаются костылями скрыть сложность погружения в его код
304 2644523
>>33783

>По возможности не пытайся


>Вообще всегда присваивай результат как надо, хотя язык этого не требует явно



Охуенный дизайн языка. Просто охуенный. Делайте как надо, а как не надо не делайте, но мы вас не заставляем, можно делать и совсем наоборот и ИНОГДА это будет иметь смысл!
305 2644596
Как же коряво делается бизнес логика, такое ощущение, что ебу байты на сишке при этом не имея и доли сишных возможностей. Как будто язык предназначен только для ебли с сетью, что бы грузить бинарные жсоны.
306 2644598
>>44596
Какую приложуху пишешь? Я все же подумываю бэкенд для несложной в плане графики игры запилить на гошке, но сомнения терзают.
307 2644601
>>44598
Беттинг.
Переписываем парочку компонентов с питона на го, что бы с сеткой быстро работало. Думали остальную часть тоже переписать, но когда дело дошло до описания доменных моделей и работы с ними от идеи резко отказались.
308 2644660
>>44272
Ты не путай, в рабочем коде слои изолируются через интерфейсы. То, что в стдлибе ничего не выведено на интерфейсы - так это просто разрабы мудаки, но это ж не повод за ними повторять плохое.
309 2644661
>>44596

>ебу байты на сишке при этом не имея и доли сишных возможностей


Ты только что суть.

>>44598
Если чисто ради изучения чего-то нового, то запили лучше на кложе\хаскеле\эликсире. Если надо просто запилить побыстрее и чтоб работало, то бери то, что знаешь лучше всего, очевидно же.
310 2644782
>>39443

>async/await - создает специальный класс async функций которые можно вызывать только из async функций или специальным образом


Какое же говно этот ваш Шарп
Минуточку...>>39443

>В Го можно любуй функцию запустить как горотину - специальным образом


Ах, какой же это охуенный язык!
311 2644789
>>44660
Так и не в стандартной. Все модули - кто в лес, кто по дрова, и гордятся своим специальным апи.
312 2644791
Всё-таки знаете, аноны, перл приятнее. Он хотя бы не прикидывается ем, чем не является.
313 2645030
>>44791

>перл


Яндексблядок детектед! Когда мои ПД вернешь, сука?
314 2645056
>>43498

>почему го получил такую бешеную популярность


компилируемый + горутины из коробки + простой в освоении по сравнению с растом или cpp + gc
315 2645062
>>41919
DI обычно не используется в гошке.
316 2645097
>>45056

>компилируемый + горутины из коробки + простой в освоении по сравнению с растом


Таких языков десятки, если не сотни. Но у них нет финансовой поддержки гугла. и няффки-логотипа :333
317 2645100
>>45097
Горутины из коробки у кого есть? У раста нет, у cpp тоже.
У сишарпа их нет. У джавы вот только-только в превью.

>>45097

>Но у них нет финансовой поддержки гугла


Ну само собой без пиара ничего не взлетит само по себе.
318 2645216
>>45100
эликсир, окамл, кристал, ди вроде тоже, и еще сотня более обскурных языков, я даже где-то список сохранял, лень искать

без поддержки (((корпораций))) все равно все дохлое
319 2645258
>>43498
Подожди, но это хуёвый ответ.
Я тебя спрашиваю "что тебе не нравится в гошных дженериках?". Ты мне отвечаешь "в го нет мап без any" (кстати так и не понял о чём это ты) и дальше накидываешь про сам язык.
В итоге, ты пиздел на гошные дженерики, поясняй за них, что тебя в них не устраивает.

>>43505
Ты глупенький что ли? Это называется замыкание и происходит во многих разных языках, в том же js (ну со скидкой на то, что он однопоточный).
Если ты используешь в горутине какую-то переменную, а потом эта переменная изменится - то да, она изменится внутри горутины тоже. Абсолютно валидное поведение. Не хочешь, чтобы она менялась - то не суй в горутину то, что меняется снаружи.
320 2645270
>>45258
Нельзя использовать в методах, нельзя использовать как уже говорили выше в мапах/слайсах, это сырое говно. Интерфейсы тоже не лучше, нельзя например сделать интерфейс с типами как параметр функций (нахуя тогда оно надо?) и это только то, что пришло сразу в голову, покопаться - еще больше пиздеца будет

другой анон
321 2645278
А где вы прочитали про дженерики? Я скачал книгу за 2023 год, но там нет ничего про них. А в старых самого собой про них ещё и не знали.
322 2645336
>>45270

>нельзя использовать как уже говорили выше в мапах/слайсах


В качестве ключей в мапах и в качестве значений в мапах/слайсах можно.
323 2645371
>>45278

>книги по программированию


>2023


Имагинировали ебало этой промывки инфоцыганами?
324 2645414
>>45030
Нахуй пошел, быстро решительно.
325 2645418
>>45270

> нельзя использовать как уже говорили выше в мапах/слайсах


можно

> нельзя например сделать интерфейс с типами как параметр функций


можно
326 2645432
>>45418
Покажи, вот у меня есть функция, которая должна принимать либо int64, либо float32, либо string, как это реализовать в интерфейсе?
327 2645433
>>45278
Так толсто, что даже тонко
328 2645439
>>45432
Ну вот например. Это то, что ты хотел?
329 2645448
>>45418
Как использовать в мапах/слайсах с проверкой типов? За any будешь обоссан.
330 2645462
>>45439
Так это дженерики уже, попробуй тогда это сделать методом
331 2645464
>>45448
Что тебе нужно, например от мапы? Не совсем ясно что ты хочешь с ней делать. С дженериками и мапами кажется в гошке все ок.
332 2645471
>>45464
Я хочу хранить в мапе MyType. Я просто хочу хранить в мапе MyType.
Алсо, почему го - единственный ЯВУ, в котором я должен думать о ёмкости коллекции? Почему в го нет ArrayList?
333 2645478
>>45462
Ну вот. Чтобы интерфейс был рисевером язык не поддерживает, нужно структуру сделать. А вообще пропозал был https://github.com/golang/go/issues/54347
334 2645481
>>45439
Что это за IDE?
335 2645482
>>45478
И че это, мне каждый раз придется делать новый инстанс этого типа??? Это конечно круто, но обычно методов далеко не 1…

Факт фактом, что дженерики, что интерфейсы в гошке - сырое говнище
336 2645483
>>45481
Очевидный голанд очевиден.
image.png33 Кб, 722x383
337 2645484
>>45471

>Я хочу хранить в мапе MyType. Я просто хочу хранить в мапе MyType.

338 2645492
>>45414
Яндексблядку не пичот!
339 2645498
>>45464

>С дженериками и мапами кажется в гошке все ок.


Чтоб было ок, мапы должны быть не накостыленным встроенным типом, а обыкновенным Map[k,v], где к - компарабл.
340 2645500
>>45483
Но он платный и дорогой
341 2645509
>>45500
Винда тоже платная и недешевая, и что теперь?
342 2645510
>>45498

>компарабл


Это слишком сложно для простого языка.
image.png22 Кб, 716x286
343 2645512
>>45482
Дело не в дженериках, а в том, что методы для интерфейсов не нужно имплементить.
Их имплементят уже те, кто этот интерфейс хочет реализовать. Так что дженерик интерфейсы в качестве ресивера особо бесполезны имхо.
344 2645524
>>45510
Как проще? По хешкоду считать как джаве или питоне?
345 2645529
>>45524

>Как проще


boolean, numeric, string, pointer, channel, and interface types, and structs or arrays that contain only those types.
image.png120 Кб, 888x418
346 2645545
Алсо в 1.20 добавилась неочевидность: P any и просто any это разные вещи.
Для обычного any, (который на самом деле interface{}), == определен.
А для типа, который ограничили any, уже == не определен. Вот такая хуйня.
347 2645546
>>45512
То есть все, кто имплементит интерфейс, обязаны заниматься копипастой. Ну да, у нас же простой язык.
348 2645550
>>45546
Так во всех языках, не? Интерфейс это просто набор методов, которые нужно заимплементить, чтобы реализовать этот интерфейс. По сути просто контракт, что такие-то методы реализованы у всех, кто заимплементил этот интерфейс.

Причем тут копипаста? Или ты про аналог default методов в джаве, которые хуй пойми зачем нужны?
349 2645551
>>45546
Или про абстрактные классы, которые уже у себя имплементят часть поведения? От абстрактных классов решили отказаться. Даже в ООП языках их почти не используют сейчас.
350 2645579
>>45512
Хорошо блять, смотри, у меня есть свой тип, у него есть дохуя методов, и мне нужна что бы метод например Add принимал в себя одновременно и int и float и еще какую то хуйню, а еще у меня есть соседний метод, который принимает в себя только float или int, как реализовать? С any - идешь нахуй
351 2645583
>>45579
Делаешь два микросковиса...
352 2645595
>>45583
Кого кого делаю? Что ты там мямлишь
353 2645600
>>45595
Микросервисы, блядь, делаешь? Родина дала легковесные потоки и горутины, а ты хочешь разнотиповые методы в одном месте собрать.
image.png42 Кб, 888x418
354 2645603
>>45579
https://github.com/golang/go/issues/49085

Так сделать нельзя.
355 2645609
>>45603
Да ну капитан очевидность, правда что ли? Я про это и говорю, или по твоему это недостаточно сыро?
356 2645616
>>45603
Как в джаве такое сделать я уже не помню, не уверен, что там такое вообще можно было сделать, мб только если отказаться от дженериков и нагородить что-нибудь с иерархией наследования.
Про С++ хз, там наверное возможно поебаться с шаблонами и сделать как надо.

>>45609
А как в других языках такое делается?
357 2645618
>>45600
А да, точно, это же Go Way - про GOвнокод
358 2645628
>>45609

> Go is not designed to cover this kind of use case


Вопросы?
359 2645635
А нужны ли вообще дженерики? Для операций со структурами данных и для построения штук вроде Stream API нужны. А в остальных случаях? Сколько не видел продуктового кода на го, нигде не видел дженерики или чтобы они были сильно нужны.
360 2645639
>>45635

>нигде не видел дженерики


Может потому что они релизнулись в недавних апдейтах???
Мало того что проект с ними писать нужно, так они еще и не допиленные, так еще и самих разработчиков нужно научить использовать их
361 2645656
>>45639
Я раньше на джаве писал. Там дженерики видел только в коде библиотек всяких.
362 2645662
>>45656
Кто виноват что ты говнокодер?
363 2645665
>>45510

>ГОЙ-ВЕЙ!!1

364 2645672
>>45545
Как же они заебали со своей простотой...
365 2645694
>>45635
Если у тебя статическая система типов, то она должна поддерживать параметрический полиморфизм, иначе это не система типов, а говно. Иначе ты не сможешь тайпчекнуть map :: (a -> b), [ a ] -> [ b ] или тривиально id :: a -> a.

Если у тебя язык, рассчитанный на хоть какое-то практическое применение, то тебе нужно решать expression problem[1] и поддерживать рантаймовый ад-хок полиморфизм, иначе не получится никакой модульной разработки. Это так или иначе приводит тебя к тайпклассам (а-ля х-ль) либо модулям\функторам (а-ля окамл), либо протоколам\клос в динамических языках. Это все если что было уже достаточно хорошо известно и исследовано в 90-ые. но читать вадлера - это не го-вей

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

[1]: https://en.wikipedia.org/wiki/Expression_problem
366 2645771
Как мне вернуть дженерик в функции?
367 2645866
>>45771
В смысле. Приведи пример кода, что ты хочешь сделать.
368 2646003
Я давно так не рофлил.
Кучу времени всякие долбоебы пиздели, что с го что-то не так. И в итоге стоило только начать предметный разговор, как выясняется что.. Вполне всё так. И дженерики рабочие, и мапы делать можно, и shadowing нормальный, и замыкание такие же, как и везде.
Очевидно, что здесь, как во всяких чатах в телеге, тусуется куча сомнительных личностей околоджуновского уровня, которые с уверенным видом вбрасывают в треды своё неквалифицированное мнение и самое главное, что может сделать нормальный человек - их не слушать.
369 2646016
>>46003
Я так понимаю неудобные посты выше ты игнорируешь и для тебя они «недостаточны» или что?
370 2646022
>>46016
Это же гофер. У него же религиозное сознание, как у яблочника.
371 2646031
>>46016
Если закрыть глазки, то этого то и нету совсем!
372 2646040
>>46016
Я просто не восьмибитный школьник, страдающий максимализмом и тем более не ведусь на "моду" любить или не любить какие-то языки.

Идеальных языков не существует и в какой ты не ткнешь пальцем, найдешь трешняк. Джава пиздец жирная с уродливой жирной экосистемой поверх спринга, с++ угроблен кучей магии и ансейф вещей прям в стдлибе и какими-то академическими уебанами в комитете, js тащит за собой какой-то адский груз легаси из плохих решений в прошлом, ещё и оборачивая его в миллион библиотек поверх других библиотек, ts пытается прибирать за js c переменным успехом, php однопоточный, ruby с python тормозные и не умеют в нормальную многопоточность, c# вызывает диабет, scala ещё более жирная чем джава и к ней есть большие вопросы по поводу принятых там подходов, и тд и тп один rust няшечка и идеален.
К го тоже есть вопросы, да.
Просто нужно держать это всё в голове, что мир не черно белый и у всего есть много неочевидных плюсов и минусов. Та же гошная "простота", которую принято хейтить, иногда реально решает и к примеру когда пытаешься продраться сквозь 100500 слоёв абстракции в джавовом монолите, который ещё и стартует несколько минут, невольно думаешь, что всё могло быть иначе. И тупой хейт языка просто показывает вас дебилами с упрощенной картиной мира в голове.
373 2646047
>>46040
И тем более странно делать тупые вбросы про большие или маленькие переменные (это блять условность синтаксиса, как $ в пхп. Вам то какая разница чего печатать), мапы (нормально работают, запихать можно почти всё, что угодно и в реальной жизни проблем с этим вообще нет), дженерики (ну разве что дженерик методов пока не бывает и то в новых версиях их обещают. и в стд либ обещают внедрить, просто не сразу) и тд и тп.
Когда вместо нормальных аргументов вида "вот это можно было сделать лучше вот так вот" читаешь что-то настольно непродуманное, хочется закрыть тред и окончательно поставить крест на людях, раз они думать не хотят. И то часто даже по "разумным" комментариям видно, что анон просто хочет, чтобы го был "как жава" и не понимает, почему что-то сделано так, а не иначе и что здесь был трейдофф и разработчики языка пожертвовали одним в пользу другого. Кстати напоминаю, что в джаве джереники сделаны просто стиранием типов и это самое уёбищное решение на свете.
374 2646057
>>46040

>А ВОТ У БААРЕНАААА


Хохол, ты?
375 2646110
короче бля им надо было просто женерик методы сделать, но не ебаться с их поддержкой в интерфейсах. просто бля писать такого метода нет в интерфейсе. ну и всё, тогда бы люди думали о том как проблему интерфейсов решить, а не тупо жаловались что не могут метод написать.
376 2646154
>>45484
Охуенно. Ну и какая сигнатура у получившейся Мары? Какой тип? Как ее передать в функцию?
377 2646166
>>46154
она же литералли на скриншоте инстанциирована
378 2646203
>>46003
Я сюда пришёл из мвп-треда, потому что рейтинг вката в го самый высокий
379 2646271
Как иге всё-таки скрестить ежа и ужа? Методы и дженерики?
380 2646272
>>46271
В смысле, КРОМЕ вынесения параметра типа на самый верх? (и эти люди говорят, что async в шарпе токсичный)
381 2646286
>>45484
Во, я вспомнил вопрос. Это значения одного типа в одном мапе? Я хочу разные.
382 2646291
>>46286

>Это значения одного типа в одном мапе


Ну как видишь ключ это строка, а значение float32.
383 2646293
>>46271
Просто делай методы, где ресивер это структура, а не интерфейс. Все чотко будет.
384 2646297
>>46271

>Методы и дженерики


Пока что никак.
385 2646423
Почему они не догадались добавить в язык тип decimal? Ведь предполагается работа с базами данных напрямую, а адекватного типа, чтобы запихать денежное значение - нет.
386 2646475
>>46423
Сложна. Го простой зяык.

> адекватного типа, чтобы запихать денежное значение - нет


Go is not designed to cover this kind of use case

>>46291

> значение float32


А мне нужно было MyType.
387 2646487
>>46475

>MyType


float32 это и есть MyType
388 2646489
>>46286
Вообще что конкретно с мапой тебе нужно? Напиши кодом, словами нихуя не понятно чего тебе надо.
389 2646503
>>46475

>Go is not designed to cover this kind of use case


Го это про засовывание байтов в сокет, а не вашу доменную логику
390 2646510
>>46487
Как рядом с ним положить string?
image.png52 Кб, 917x621
391 2646617
>>46510
Не получится. Дженерики не решают эту проблему и не должны решать. Дженерики как раз сделаны, чтобы не допускать такого, то есть наоборот запрещают подобные действия.

Если тебе нужно одновременно держать значения разных типов, то нужно interface{} использовать или any. Но это может приводить к ошибкам типобезопасноти.
392 2646662
>>46617
Нормальный язык, значит. С нормальными дженериками и коллекциями. Со строгой типизацией.
image.png4 Кб, 303x65
393 2646781
А есть ли какая-то разница, кроме того, что s1 проинициализирован? Спасибо!
394 2646830
Какой же Го охуенный!

Вот есть regex.FindStringIndex() . Что он возвращает? Нет, не (int, int), не угадали. Нет не int[2], опять не угадали. Он возвращает - []int в котором обещают положить 2 элемента. Гении блядь, просто гении!

А ещё, по дефолту методы regex работает с байтами и надо добавлять суффикс String чтобы работать со строками.
395 2646854
>>46830

> Он возвращает - []int в котором обещают положить 2 элемента


Эта доёбка была бы почти справедливой, если бы я не знал, что там под капотом используется общий для всех регулярок метод (re (*Regexp).doExecute , который всегда возвращает слайс (потому что он используется например в FindAll, когда вхождений может быть неопределенно много) и раскукоживать этот слайс на две отдельные переменные означало бы выделять дополнительную память. Захочешь - сам из слайса достанешь.
Но доебаться на двачах проще, чем самому заглянуть в код и разобраться, почему что-то сделано так, а не иначе, не так ли?

> А ещё, по дефолту методы regex работает с байтами и надо добавлять суффикс String чтобы работать со строками.


В целом нормальная тема, строки и слайсы байт это разные типы и всегда терпеть оверхед на конверсии не хотелось бы.
396 2646860
>>46617
Вот я получил из мапы any. На самом деле это параметризованный интерфейс. Ну то есть внутри конкретная структура, с конкретными типами, и она знает, какие у неё типа, и её методы отвечают интерфейсу.
Прежметно.
type IEnitity[X, D] interface {
GetX() X
GetD() D
}
Есть структура, которая под ним лежит, есть конкретные X и D. Есть myMap map[string]any, куда сложены экземпляры.
Из myMap очевидно достчётся any. Как из него сделать IEntity?
397 2646864
>>46003
Да, тут какие-то залетные школоло несут какую-то хуйню, которую без поллитры не разберешь, но я против них не воюю, воюю только в правильную сторону. Про дженерики (типопараметры в методах, которые обещали еще к 19-ой версии запиить) тебе уже пояснили, про мапы тоже.

мимо-хейтер-го
398 2646868
>>46040

>Та же гошная "простота", которую принято хейтить


Так хейтят не "простоту", а тот факт, что пиздеж о некоей "простоте" - это именно что пиздеж.

И за то, что авторы языка полностью проигнорировали весь прогресс в комплюктер ссайенс с 70-ых годов, и вместо того чтобы просто зделоть нормально зделоли так, что теперь всем еще 30 лет за ними чистить вилкой придется.
399 2646871
>>46047

>и в стд либ обещают внедрить, просто не сразу


Время переписывать код!
400 2646874
>>46860

>Из myMap очевидно достчётся any. Как из него сделать IEntity?


берешь и делаешь https://go.dev/play/p/U4qbQedqkQy
401 2646878
>>46503
Наверное поэтому в стандартную библиотеку засунули кривой шаблонизатор, ведь go is about simplicity i zasovyvanie baytov v socket.
402 2646881
>>46781
В случае слайсов - нет. В случае мап - есть, второй вариант сегфолтнется при использовании. Почему? Потому что go is a simple language, если уж добавляем три разных способа написать одно и то же - то надо обязательно добавить еще парочку корнер кейсов, которые крашатся в рантайме. Ну чтоб жизнь медом не казалась.
403 2646885
>>46881

>В случае слайсов - нет. В случае мап - есть, второй вариант сегфолтнется при использовании


так если ты в nil слайс полезешь по индексу как в мапу то аналогично схватишь, тут магия только внутри аппенда
404 2646886
>>46854
Эта абстракция была бы почти абстракцией, если бы не текла.

кстати, если уж экономишь выделение двух интов на стеке, то не забудь руками копипастить код этой функции каждый раз вместо ее вызова, ведь го - это про производительность и ПРОСТОТУ
405 2646889
>>46886

>не забудь руками копипастить код этой функции каждый раз вместо ее вызова, ведь го - это про производительность и ПРОСТОТУ


а инлайнер в гошке чем не угодил то
406 2646896
>>46885
Эм, нет. По какому индексу, если слайс пустой? Без разницы, инициализирован он нилом или собственно пустым слайсом, - он все равно пустой и будет out of bounds. Это не то.

В говномапах добавление нового элемента делается синтаксисом m[k] = v. В слайсах добавление нового элемента делается аппендом. В первом случае мы крашимся в рантайме от нил, во втором нет. Потому что ПРОСТОТА
407 2646897
>>46889
Это к тому анону вопрос, не ко мне.
408 2646901
>>46874
Нихера. У ьеня X и D - обобщённые интерфейсы. И IDE мне говорит, что я должен их вынести в сигнатуру функции, типа определить. А мне нахуй не надо их здесь определять!
410 2646903
>>46860

>я получил из мапы any


Не нужно делать мапы map[X]any - это плохой паттерн. Нахуя ты так делаешь? Так не стоит делать.

И что за структура внутри, покажи ее в треде? Параметризованный интерфейс я увидел. А что за типы X и D, какие у них должны быть ограничения? Так нихуя и не понял что тебе нужно.

Складывать как значения в мапу структуры разного типа, но которые один и тот же интерфейс имплементят?

В общем как я понял тут что-то такое ты хотел?
https://go.dev/play/p/lWQgHbuZ825
411 2646904
>>46901
Скинь код чо ты там хочешь наворотить, нихуя не понятно
412 2646911
>>46902

> func accounting[X, D any]()


Вот это мне не нужно. Тем более что у меня не any, а вполне настоящие интерфейсы. То есть я был бы и не против, НО ЗДЕСЬ У МЕНЯ МЕТОД!!!
413 2646913
>>46911
ну тогда еще проще)) https://go.dev/play/p/uJkSz1YHb64
414 2646915
>>46903

> Нахуя ты так делаешь?


Тому що в простом языке это единственный способ засунуть в мапу что-то неоднородное.
415 2646921
>>46913

> [int, float32]


Чудесно, а тут ты из воздуха взял конкретные типы. До чего же простой язык, я ебу.

Так, с any не прокатило. Где-то на SO читал, что можно засунуть IIFE функции хитрым образом...
416 2646929
>>46903

>map[X]any - это плохой паттерн


Обоснуй.
417 2646930
>>46915

>засунуть в мапу что-то неоднородное


Так не нужно делать. Не стоит хранить в мапах неоднородные объекты.
Если сильно нужно, то есть интерфейсы для такого.
418 2646931
419 2646934
>>46930

>есть интерфейсы для такого.


А any - это не интерфейс, угумс.
420 2646936
>>46931

>так не нужно делать


>>почему?


>потому что так не нужно делать


Аргументация уровня Говна поел.
421 2646941
>>46930
А не пiйшов би ти нахуй?
422 2646965
>>46921
Нашёл. И там в итоге советую использовать рефлексию :(
ОХУЕННЫЙ ЯЗЫК
423 2646976
Сука, как же тебя наебать-то :( Это же пиздец императивный, в 21-то веке!
424 2646994
>>46976
Да, никак. Дженерики должны однозначно раскрываться во время компиляции. КТО СКАЗАЛ МАКРОСЫ? Я ЯСНО СЛЫШАЛ, КАК КТО-ТО СКАЗАЛ МАКРОСЫ!
Надо как-то переписывать чтобы type switch использовать.
Боролся со свитчем и пришёл к тому, что единственная альтернатива свитчу это свитч. Ебануться.
Подходила к конфу первая четверть 21 века. За окном шёл дождь и рота красноармейцев.
425 2647032
>>46994
Если честно, я так и не понял, что тебе нужно и что ты хочешь сделать. Если не влом, опиши одним постом с конкретным юзкейсом.

ГОвноланг - говно, гофанатики - пидоры, я не тролль, просто интересно
426 2647049
Ну вот выдержка.
https://go.dev/play/p/hs5rGn13eFU
Я хотел в Handler получить объект из коллекции и вызвать у него методы. Объект получается в зависимости от сигнатуры. В РАНТАЙМЕ. На шарпе или яве это делается на раз-два.
427 2647054
Отличная статья про Годноту языка: https://betterprogramming.pub/generics-in-go-are-we-there-yet-af851c35ba0
Как раз то, что мы последние дни обсуждаем. Того нет, этого нет, нихуя нет, населена гоферами.
428 2647061
>>47049

>T


>I


Говноеды.

И извини, но это просто адовый говнокод, и ты делаешь какую-то хуйню. Тебе вообще ненужны тут ни юнионы в констрейнтах, вообще ничего из того что ты наклал ненужно. Тебе достаточно полутора интерфейсов и одного тайп свича, все.
429 2647070
>>47061

> тайп свича


У меня уже был свитч. Я хотел избавиться от него. Я, сука, неделю от него пытаюсь избавиться. Я пишу без свичей на скриптовых языках, я пишу без свичей на строгих языках, и только го заставляет меня херачить простыни свичей.
Как это говно стало популярным? Ради того, чтобы быстро класть быйтики в сокеты в 1000 потоков, люди готовы жрать говно?
430 2647107
>>47070
Какие простыни? У тебя в пасте натурально целый экран говнокода с хуевой декомпозицией, который заменяется буквально тремя понятными строчками. Что конкретно ты хочешь сделать? Ты можешь нормально сформулировать техзадание? Или хотя бы запастить полный код?
431 2647175
>>46854

>Эта доёбка была бы почти справедливой, если бы я не знал, что там под капотом используется общий для всех регулярок метод (re (*Regexp).doExecute , который всегда возвращает слайс (потому что он используется например в FindAll, когда вхождений может быть неопределенно много) и раскукоживать этот слайс на две отдельные переменные означало бы выделять дополнительную память. Захочешь - сам из слайса достанешь.


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


Уж лучше бы молчал.
1. Уродский API остается уродским, даже если он сделан ради перформанса. Хотя конкретно тут перформансом и не пахнет, тут проблема в лени разрабов.
2. Положить 2 инта на стек, это пиздец какая дорогая операция. Ну а главное, что перед возвратом слайса там делается еще один слайсинг a[0:2] что создает на стеке те же пару интов.
3. Разрабам библиотеки насрать на перформанс, иначе бы они не использовали слайсы там где можно обойтись без них. У тебя на любой матч/файнд создается новый массив в куче, куда слайсятся результаты поиска.
4. В любом случае таким нано оптимизации, должны обязательно подкрепляться бенчмарками. Типа делаем кривой API потому что на реальных данных это дает +15% перформанса.

>В целом нормальная тема, строки и слайсы байт это разные типы и всегда терпеть оверхед на конверсии не хотелось бы.


Проблема не в наличии методов работы с байтами, а в том что метод Find() работает с байтами, а не строками что было бы логичней. Т.к. поиск по строкам выполняется чаще, чем по байтам.
432 2647377
>>46003

>что с го что-то не так


Работа со строками, подход как в говяхе работает, если ты имплементируешь что-то низкоуровневое и нужна ебля с байтами. Для вебсервера заебись, для сервера приложения полное говно.
433 2647422
>>47107

> Что конкретно ты хочешь сделать?


Я хочу выводить типы в рантайме. К сожалению, Go is not designed to cover this kind of use case. Дженерики работоспособны только при условии, что рано или поздно ты руками свернёшь их в конкретный тип. Нахуй они тогда вообще нужны, я не понимаю.
434 2647566
Полистал примеры кода на голанге. У вас реально присваивание переменных через := или это троллинг такой? Это что за паскалевысер такой?
435 2647596
>>47566

>Полистал


маладетс! держи в курсе!
436 2647648
>>47566
Ещё типы с правой стороны
437 2647827
>>47422

>Я хочу выводить типы в рантайме


Дженерики существуют на уровне компилятора, это не сущность рантайма.
В рантайме работает рефлексия или тайп свитч.

>>47422

>рано или поздно ты руками свернёшь их в конкретный тип


Так и есть во всех языках, лол.

Дженерики по сути нужны для работы с коллекциями. Чтобы не пихать лишний раз interface{}, а взять и написать обобщенную реализацию условной сортировки или поиска в массиве. В клиентском коде дженерики скорее редкость, у нас на проекте ни в одном из сервисов они не используются кроме самописных библиотек.

В чем заключается твой кейс до сих пор не понятно. Можешь упростить и показать на более простых примерах, не захламляя код лишними переменными и структурами?
438 2647917
>>47596
Ты на поставленные вопросы отвечай, паскалеблядь
439 2647937
заебали со своими монадами. женерики были ошибкой
440 2648246
https://pkg.go.dev/os#File.ReadDir

>func (File) ReadDir


>func (File) Readdir


>func (*File) Readdirnames


Просто в голос! У дебилов кончились имена, хорошо что язык кейс сенсетив.
441 2648252
>>47917
Что тебе ответить? Что ты дебс и не видишь различия меджу присваиванием и объявлением? И еще полистываешь вместо того, чтобы почитать в документации.
В паскале приваивание
x := 1
В голанге короткое объявление локальной переменной
x := 1
x = 2
442 2648253
>>48246
Тебе уже тут все сказано >>46040
443 2648400
А правда, что нужно свои проекты размещать в GOPATH? У меня вроде всё работает и в других папках.
444 2648406
>>48400
Каталог $GOPATH/bin — это место, где Go размещает двоичные файлы, компилируемые go install. Операционная система использует переменную среды $PATH для поиска двоичных приложений, которые могут выполняться без полного пути. Рекомендуется добавить этот каталог в глобальную переменную $PATH.
445 2648409
>>48400
иначе нужно модуль инициализировать. У тебя возможно иде добавляет папку проекта в гопас
446 2648506
>>48406
Там ещё /src есть

>>48409
Ну да. Я делаю
go mod init имя_модуля
и запускаю go run .
447 2648559
>>48506

>go mod init имя_модуля


ну тогда единственное удобство это то, что с настроенным гопатхом имя модуля само из названия папочек подтянется, когда ты их в гопатхе создаш
448 2648578
>>48559
Ну дак как правильно делать? Что является идиоматичным подходом?
449 2648636
>>48578
Делай то, что тебе кажется удобнее ей богу, это программирование, тут все пишут так, как они САМИ считают удобным и правильным, нету одного единого мнения, я всегда делаю мод инит и не ебу мозги
450 2648643
>>48578
Ты слишком много думаешь, го это язык про ГОвнокод, тут надо писать просто что бы работало
451 2649214
>>48578
На текущий момент идиоматично размещать проект где хочешь ( обычно в /home/projects) и там инициализировать модуль через go mod init. Го модули это вообще де факто уже стандарт. Все штуки вида "размещать в $GOPATH) или не дай бог glide и dep - это всё устаревшие решения года времен года так 2017.

>>48643
Как вы, школьники, меня заебали.. Откуда вас столько именно в этом треде? Ни в одном языке нет такого, чтобы всем было насрать на всё, кроме факта работы. В разных языках отличаются критерии правильности, вот и всё. Те же джависты больше ценят уровни абстракции и максимальный импакт минимальным количеством кода, а гошники - более явный код, по которому должно быть понятно, что и где происходит.
452 2649661
>>49214
Как же этого Джуна рвет, что его первый язык программирования оказался полной хуйней
453 2649679
Как пишут веб-приложения?
Вот, к примеру, я могу наделать хандлеров на каждый запрос вида: /list, /edit и т.п. А как обрабатывать запросы вида: /list/1, /edit/2 ? А что если мне надо отдельные функции на GET и POST запросы? Что-то совсем не догоняю как имеющимся функционалом это можно сделать.
454 2649704
>>49679
go-chi
455 2650105
>>47422

>Я хочу выводить типы в рантайме


Извини, но ты безграмотный долбоеб (такой же, как команда го). Иди читай, что такое "система типов", что такое "вывод типов", что такое "рантайм".

Извини, но ты обоссан и обосран. Не был бы твой менеджмент таким же безграмотным - тебя бы давно уволили.
456 2650109
>>47175
Вот этот пост двачую.

>>48246
В целом os/io/fs/ioutil - это тот еще пиздец дизайна, конечно же несколько раз переделанный, хуево организованный, с кучей дупликации.
457 2650111
>>48252
Тот анон конечно малолетний дегенерат, но := есмь именно присваивание для х в случае типа
x, y := <...>
, если х уже объявлен ранее.
458 2650112
>>48400
Нет, все что связано с GOPATH - устарело и может быть проигнорировано. Просто команда разработки ГОвноланга не могла с самого начала сделать нормальную систему сборки, хотя абсолютно все им говорили, что они делают говно, и что нужно сразу сделать нормально, но они решили сперва сделать все через жопу, потом выждать лет 5, пока люди опубликуют в интернетах тысячи мануалов и туториалов с объяснением кривой системы сборки, а вот потом уже все-таки все поломать и сделать так, как им все предлагали сделать изначально. Потому что таков путь ГОвна, понимать надо. Гой-вей.
459 2650116
>>49214
О, кстати! Анон, давай обсудим НЕЙМИНГ. Пост абсолютно нерелейтед, но ты мне напомнил. Вот у меня тоже всю жизнь папка с кодом называлась projects. Но я тут подумал, что во-первых это слишком длинное слово; во-вторых, у меня есть другая директория projects в другом месте, где лежат проекты, не связанные с кодом. Короче, как правильно назвать папку с кодом?

- dev - логично, кратко, красиво, но блин /dev означает другое, опять одно слово для двух вещей
- code - но собственно код у меня лежит и в других местах, а здесь лежит именно мой код, ну точнее мои проекты, либо проекты в которых я принимаю и\или планирую принять какое-то участие
- coding - логично, но англоспецифичные суффиксы это антипаттерн!
- src - было бы неплохо, но получается дублирование из-за projectname/src, так что не вариант
- ???
- какие еще есть варианты?

пойду репостну в линукс-тред

алсо ебать тебе бомбануло от правды о говноланге, хе-хе
460 2650164
>>50116
peace-death
461 2650181
>>50116
Я слышал, что надо cmd называть, а внутри ещё создавать папку app.
462 2650190
>>49214

>по которому должно быть понятно, что и где происходит


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

имагинируешь ебало тех кому более понятно.
oof.jpg42 Кб, 680x436
463 2650354
>>49214

>джависты больше ценят уровни абстракции и максимальный импакт минимальным количеством кода


>джависты


>минимальным количеством кода

464 2650364
Вот берёшь любой курс, книгу или серию видео на ютубе. Вначале говорят, что голанг такой крутой язык, что ему не нужны фреймворки. А когда дело доходит до написания реальных веб-приложений, то автор как бы невзначай говорит: ну а тут будем использовать такой-то фреймворк.
465 2650452
>>48578
идиоматичным? модули. гопатх это рудимент который ну ты можешь настроить для себя если тебе хочется но это совсем не обязательно
466 2650460
>>50116
держу все проекты в src, включая свои/рабочи и рандомную хуйню с гитхаба не вижу ничего плохого в
~/src/github.com/golang/go/src/cmd/api/testdata/src
467 2650464
>>50460
Ну у меня бомбит от этого ~/src/.../src. Хотя так-то наиболее логичный вариант, тут соглы.
468 2650519
>>50116
Борщехлёбность рассуждений зашкаливает.
Знаешь, как выглядит путь к папке с проектами и серьёзных, деловых людей? Примерно так:

>D:\По работе\Новая Папка\говно\github.com\golang\

469 2650611
>>50519
Прекрати лазить по папиному компьютеру.
470 2650869
>>50464
Храню все documents/coding/Golang/%project name% и не ебу себе мозги настолько тупыми вопросами, храни там, где удобнее
471 2650891
Бомбящий неделю назад скуф на связи. Всё-таки получилось, я познал дао го-дженериков и интерфейсов. Хотя от свичей по-прежнему бомбит.
А ещё бомбит, что структура помешается в интерфейс, и УКАХАТЕЛЬ НА СТРУКТУРУ прекрасно помещается в тот же самый интерфейс!
Я опять чего-то не понимаю? Или это хвалёная простота языка, когда я не могу понятоь, передаю я в функцию изменяемое значение или неизменяемое?
472 2650935
>>49704
Но тогда получается нужно учить этот фреймворк как спринг на джаве или асп.нет на сишарпе. В чём преимущество голанга тогда?
473 2650952
>>50935
Ты совсем не понимаешь что такое библиотека для роутинга имеющая буквально пару функций и ебучий фреймворк на миллиард абстракций, структур и разных функций? Там даже тысячи строк нету в ней
474 2651093
>>50891
выебоны с велью ресиверами это просто повод выстрелить себе в ногу, когда какой-нибудь хуй через полгода добавит в структуру слайсик/мутекс и решит аппендить/залочить внутри этого метода
475 2651149
Куда вкатываться?
В бэк, микросервисы или завод?
Screenshot20230324155801.png395 Кб, 753x425
476 2651214
477 2651272
>>50891

>Или это хвалёная простота языка


Да, это оно самое. гой-вей Есть еще корнер кейзы с имплементацией интерфейса, если ты миксуешь поинтер и валюе ресиверы, поэтому лучше всегда использовать только поинтер ресиверы. ПРОСТОТА
478 2651573
Кто нибудь знает на чём сидят авторы говна?

> for х := range someSlice {


Какого хуя х это индекс, а не значение? Кому в здравом уме нужны только индексы элементов массива? Это же совершенно неюзабельная хуйня!
479 2651647
>>51573
По индексу можно получить и значения, а переменная массива к тому же будет лишь копией значения и следовательно изменить его не сможешь. Так что, индекс (ключ) > значения.
480 2651700
>>51647
Просто нужно сделать это поинтером на элемент
481 2651800
>>51647

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


Ёбаный стыд, кто на говне пишет.
1. Какой только хуеты не придумают, лишь бы оправдать маразм архитекторов языка.
2. Не могу в простейшую логику ну или вообще язык не знают
for _, val := range someSlice {
ВНЕЗАПНО, тоже создаёт копию значения слайса.
482 2651857
>>51272

> если ты миксуешь поинтер и валюе ресиверы


А что будет?
Я, кстати, избавился от any. Правда, пришлось всё на свете обмазать дженериками. С any у меня получалось, что я возвращал указатель, а присвивал значению. И оно волшебным образом кастовалось. Сидел целый еднь старательно убивал волшебство.

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

В целом - кошмар, в том плане, что без IDE я бы не разобрался. Я с ней-то по полдня сидел глядел на ошибку.
483 2651862
>>51573
Я сегодня изучал вопрос, как сделать N итераций. Просто N итераций. for ()..N). Официальный ответ Пайка - надо использовать трехчленный for. Вы не понимаете, это удобнее, чем for (1..N).
484 2651950
>>51862
А в каких языках кроме питона и луа не так? Создание нового массива и forEach если что не катит
485 2651963
Imagine ебало тех кому нормально ебатсья с указателями в 2023, чтобы написать круд
486 2652046
>>51963
Ну да, константные ссылки были бы лучше. Но это слишком сложно для простого языка.
487 2652061
>>51950
Enumerable.Range(0, 10) в шарпе
488 2652118
Колхозного интерпретатора ещё не придумано для Go? Playground конечно хорош, но хочется локально гонять без go run компиляции.
489 2652134
>>52118
Зачем? Если поиграться, можешь в голанле пускать. Если что-то серьезное, то лучше возьми нормальный скриптовый язык.
490 2652233
>>51800

>ВНЕЗАПНО, тоже создаёт копию значения слайса


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

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

>А что будет?


это

>оно волшебным образом кастовалось


если у тебя поинтер ресивер, то реализация для валюе ресивера подставляется автоматически, а если у тебя валюе ресивер, но на коллсайте используется поинтерресивер, то ты словишь ошибку нот имплементед (особливо доставляет вкупе с дактайпингом), а если у тебя микс поинтер и валюе ресиверов, то еще веселее; энивей во всех стайлгайдах и емнип официальных доках рекомендуется не миксовать одно с другим и использовать поинтер ресиверыГОЙ-ВЕЙ

Вообще, забавно, насколько говнофанатики промытые зомби - буквально весь язык состоит из корнер кейсов, магических неочевидных вещей и прочей аморальной хуиты. Но чувак в пинджаке им сказал про ПРОСТОТУ - и тысячи хомячков до сих пор это повторяют. Ведь он же в ГУГЛЕ рабоатет, понимать надо, вумный значит дофига.

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


Один уровень индирекшона разыменовывается автоматически
492 2652248
>>51862
Тупая косметическая доебка, уровня "а вот в лишпе надо писать (f x y) вместо f(x, y), кокой кошмар!!11".

Хотя в целом это конечно сигнализирует о том, что в языке нет поддержки стримов (потому что нет нормальной системы типов)
493 2652249
>>52118
yaegi
494 2652256
>>52244

>Один уровень


Ахтыжептвоювбогадушумать. Никогда бы не подумал.
495 2652261
>>52248

>в целом это конечно сигнализирует о том


Что некоторые языки заботятся об удобстве программиста, а некоторые объясняют, для чего именно язык предназначен.
496 2652298
>>52134
Моя бы воля, вообще бы в голанг не лез.

>>52249
Благодарю!
497 2652335
>>52233

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


Кстати, почему не сделали итераторы как в пистоне? Реализуешь определенный интерфейс и итерируешься сколько хочешь без ебли с каналами
498 2652364
>>52261

>Что некоторые языки заботятся об удобстве программиста


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

>>52335
Потому что... задние ряды уже начали догадываться... потому что... %%ГОЙ-ВЕЙ!!!11 ПРЫСТОТА, ПЫНИМАИШ?!!111 ГОЙВЕЙПРОСТАТАяидиотубейтеменяктонибудь
499 2652403
>>52061

>без создания нового массива


>функция создающая новый массив


Ебало памяти и гц Имагинировали если мне нужно слишком дохуя сделать итераций?
500 2652581
>>52403
Дохуя итераций обычно на пустом месте не появляются. У тебя скорее всего есть уже какая-то коллекция, по которой ты итерируешь. Я про другое. Тете для простого учебного примера надо сделать 10 итераций. Или тебе надо скинуть первые десять строк файла. Или что-то такое.
>>52364
Не знаю, чего все так не любят сахар. Вот в сях квадратные скобки это сахар? Сахар. Неужели удобнее писать (pointer+5sizeof(int)) ?
501 2652582
>>52581
Да шож ты сука звёздочки жрешь, падла...
503 2652714
>>52403
Не уверен на 100% насчет шарпа на 95% впрочем уверен, но нормальные стрим апи (или трансдьюсеры например) не создают новый массив при range(1,10), а просто возвращают стейтфул итератор, который с константной памятью йилдит значения в указанном промежутке. Учите матчасть, товарищи!
504 2652720
>>52581
Я не про любовь\нелюбовь, а про то, что доебка анона АРРЯЯЯ НАДО ПИСАТЬ i:=0; i<n; i++ вместо i:=(0..n) - абсолютно тупая и демонстрирует скорее его скудоумие, чем скудоумие создателей ГОвняшки (особенно на фоне того факта, что есть примерно 9000 других аспектов, действительно демонстрирующих скудоумие создателей ГОвняшки, и притом гораздо более фактурно и красочно).
505 2652727
>>15001
Концептуально правильное решение - open + first-class records, в примитивных низкоуровневых языках типа го и хаскеля такое невозможно.

Концептуально неправильное, но терпимое решение - id : Maybe int. Применяется по дефолту в большинстве языков со статической проверкой типов.

Концептуально неправильное, нетипизированное и prone to bugs решение - добавить в документацию констрейнт, что айди из базы никогда не должен равняться нулю, добавить в докстринг замечание, что айди = 0 подразумевает, что данная энтитя не записывалась в базу. Применяется в говняшке, потому что и так сойдет.
506 2652832
>>52720
А, ну так хули ты тут склоняещь Голанг? Дядя Роб сказал, как правильно писать, вот и пиши. Длинно - похуй, так надо. Неудобно - похуй, зато просто. Дядя сказал просто, значит просто.
507 2652894
>>52832

>А, ну так хули ты тут склоняещь Голанг?


Потому что это плохой язык? У тебя какой-то глупый и никчемный постинг, сорян.
508 2652949
>>14678 (OP)
Привет аноны, заинтересован в разработке какого-нибудь опенсорса или ваше интересного проекта, вдруг вы разрабатываете что-то реально интересное, может быть бесплатно, в зависимости от проекта готов уделять 10 + -ч в неделю
это еще много, поверьте, если работаешь
p.kwlks:,q123ANUSг_C#майлPUNCTUMко&";м
509 2653355
>>52949
Тоже в этом заинтересована
Телега @mentallyunstabledev
510 2653401
>>52949
>>53355
поебитесь.пнг Съебите в /soc.
511 2653480
>>52233

>Ей-богу, я воюю против ГОвна на одной стороне со школьниками-дебилоидами - лучше б вы молчали.


Ты просто тупой мудак, который не умеет четко выражать свои мысли.
512 2653490
>>53480
Я не тот анон, которому ты отвечал. Ей-богу, какой же ты тупой.
513 2653566
Так. Поясните мне по хардкору, что за хуйня.
samber/do мне сообщает: DI: could not find service `service.IService`, available services: `chi.Mux`, `render.Template`, `service.IService`
Чтозанахуй?
514 2653568
>>53566
Сука. <ASTERISK>service.IService в обоих случаях.
515 2653633
>>53566
Пошел нахуй пидорас, нахуя ты этот ебанутый диай в гошке поставил, ну и конченные Джуны пошли, им похуй на все, главное название красивое
516 2653647
>>53633
Мне нсчальник передал скелет кода. Я бы не ставил, я в нём смысла не вижу. Но я вижу магию, которую я не понимаю. Какая-то еботень со структурами, интрефейсами и указателями. В простом языке.
517 2653668
>>53490

>Я не тот анон, которому ты отвечал. Ей-богу, какой же ты тупой.


Мудило! Это анонимная борда, я отвечал на сообщение, в душе не ебу сколько там семенов.
518 2653673
>>53647
Ага. Получается, что надо регистрировать структуры. Указатели на структуры. Интерфейсы рагистрировать и получать не надо. Интерфейсом можно объявлять переменную, магию им делать на надо.

А от этого DI я собираюсь избавиться, но позже. Не вижу смысла в DI, когда у тебя нет полиморфизма в самом дизайне приложения, когда у тебя уникальная структура, в единственном экхемпляре. Думаю всё убрать в "статический клас" - спекаильно обученный package.
519 2653680
Можно ли на го писать десктопные приложения со всякими кнопочками?
521 2653700
>>53668
Так в том сообщении, на которое ты отвечал, все мысли выражены предельно четко.
522 2653704
>>53673

>Думаю всё убрать в "статический клас" - спекаильно обученный package.


Все зависимости на данном слое у тебя должны быть убраны в структуру, которая передается аргументом (или ресивером) к хендлерам.

ты уже вторую неделю пытаешься разобраться в базовых вещах, как я понимаю ты стажер, как тебя до сих пор не уволили? что за фирма, если не секрет, нонейм ипшник?
523 2653765
>>53704
Я на перле 20+ лет писал. И последние 10 лет поддерживал жуткое легаси. Пришёл сюда на поддержку, как выяснилось, ещё более страшного легаси (до 40к строк в одном файле, все в одной процедуре, вложенности if-ов достигает восьми), но в процессе решили всё переписать на го, заодно научить ему меня. Типа, бросили в воду, плыви.
524 2653782
>>53704

> разобраться в базовых вещах


В базовых вещах простого языка, который состоит из подводных камней. А заодно переписать нормально код человека, который поместил в пакет repository интерфейс Service и структуру Repository, а в пакет service - интерфейс Repository и структуру Service.
525 2653900
>>53673

>А от этого DI я собираюсь избавиться, но позже. Не вижу смысла в DI, когда у тебя нет полиморфизма в самом дизайне приложения


реальный di как паттерн или ты про di фреймворк еботу которая сама подставляет зависимости? сам di нужен, чтобы можно было замокать зависимости и написать юнит тесты без боли, которые не ломаются от минорных правок в соседнем пакете.
526 2653963
Всё равно не могу понять как пишутся реальные веб-приложения на голанге. Есть примеры проектов как пишутся типовые веб-приложения?
527 2653974
В книге Батчера, Фарина - Go на практике, авторы приводят рецепт №8 по сопоставлению URL-адресов с шаблонами через регулярки. Однако, в их примере я нашёл ошибку. Они используют в качестве хранилища мапу, а это значит, что при наличии двух и более подходящих шаблонов, выбираться будет любой первый попавшийся. Т.е. шаблон "GET /" может перехватывать запросы вида "GET /hello".
Получается даже в таких авторитетных книгах пишут лютый говнокод?
528 2654001
>>53974
Для исправления ошибки изменил их структуру на слайс, где хранятся ссылка на обработчик и откомпилированная регулярка. Само собой обработчики надо добавлять в слайс в порядке от частного к общему, т.е. "GET /hello" должен добавляться раньше, а "GET /" должен идти последним.
В принципе, таким образом можно получить неплохой маршрутизатор для своих проектов.
529 2654186
>>53963
Круд микросервис, чем тебе не реальное приложение?
530 2654279
>>54186
Дак где его посмотреть можно?
531 2654361
>>53963
Бля, чувак, ну три минуты поиска же - https://github.com/gieart87/gotoko
532 2654371
>>54361
Я слышал, что гарилу уже не используют, а горм - не идиоматичный, потому что в голанге пишут SQL-запросы, и не используют ORM.
533 2654435
Я вот сейчас думаю, что подход Адама Фримана, который написал свой мини ASP.NET на голанге, не так уж и плох.
Базовая библиотека не позволяет писать полноценные веб-приложения, потому надо наворачивать ещё целый слой логики.
Среди фреймворков целый зоопарк и не понятно какой учить, а какой не учить.
Написать что-то своё тоже сложно, потому что нет опыта.
534 2654627
>>53765
Прикольно. Вот это я понимаю - хардкор, кишки, романтика. А не круды шлепать... Нанимаете?
535 2654632
>>53782

>В базовых вещах простого языка


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

>поместил в пакет repository интерфейс Service и структуру Repository, а в пакет service - интерфейс Repository и структуру Service.


А что не так? Видишь, ты опять упираешься в непонимание принципов архитектуры, инверсии зависимстей и т.п.
536 2654638
>>53974

>Получается даже в таких авторитетных книгах пишут лютый говнокод?


Да, разумеется (и это не авторитетная книга). Тем более средний уровень ГОвноразработчиков довольно низкий, поэтому и большинство публикующихся книг по говняшке - довольно низкого качества. Их же пишут не какие-то марсиане с нибиру, а такие же кодеры.

Алсо, возможно описанное поведение соответствует ТЗ, и это не баг, а фича!

>>54001

>Само собой обработчики надо добавлять в слайс в порядке от частного к общему


Нет, нужно применять сортировку по длине префикса. Раз уж фиксишь - то фикси, а не меняй один говнокод на другой.

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


троллейбус-из-буханки.пнг
537 2654670
>>54638

>сортировку по длине префикса


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

>троллейбус-из-буханки.пнг


Это же главная идиома голанга)))
538 2654705
>>54279
Возможно более понятный тебе вариант
1) https://github.com/mammenj/goboot

В целом норм + -
2) https://github.com/shehab-as/Go-Microservices

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

юзер-товары-корзина(3 круда)
бизнес процесс добавить в корзину уже отдельный микросервис. Охуенно же по факту, имеешь структуру дерева микросервисов и быстро фиксишь\добавляешь в нужное.
539 2654707
Аноны, почему дизигн pkg.go.dev еще не завезли в качестве темы ? Если есть такая, реквестирую название.
540 2654727
>>54670

>Как ты мапу отсортируешь?


Я не про мапу... хотя вообще говоря есть сортед мапы

>А если при каждом запросе гонять сортировку


Ох... Не при запросе. При объявлении роута.

>Это же главная идиома голанга)))


Бля. Туше!
541 2654731
>>54705
Ехал сервис через сагу
Видит сервис в ямле докер
Эсдиэн гитопс графана
Кубер кубер кубер кубер
542 2654917
>>54705
Дак считается нормальным использовать гарилу/мукс?
543 2654945
>>54917
Так а почему нет? Роутер физически не могут устареть
544 2654966
>>54917
Да, хоть что используй, что сердцу твоему ближе.
image.png78 Кб, 194x259
545 2655042
>>54435

>Написать что-то своё тоже сложно, потому что нет опыта.


>Я вот сейчас думаю, что подход Адама Фримана, который написал свой мини ASP.NET на голанге, не так уж и плох.


>Базовая библиотека не позволяет писать полноценные веб-приложения

546 2655092
>>55042
Ну а что ты рекомендуешь?
547 2655129
>>54731
Езал pointer через any,
Видит any -- pointer any
any any any any
548 2655132
>>55129
Вру, последняя строчка такая - any any pointer nil
549 2655137
>>55092
Зачем тееб го, анлг* Иге вль за него платят деньги, и я страдаю. Я бы поедпочёл, чтобы мне платили за шарп, но мне платят за го, и я разыменовываю nil. А тебе зачем? Возьми нормальный типизрованный язык. Или возбит нормальный гибкий удобный язык.
550 2655141
>>55137
У голанга самый высокий рейтинг вката, а на сишарпе он один из самых низких, дак ещё надо и фронт учить, потому что 75% вакансий - это фуллстек.
551 2655629
>>53700

>все мысли выражены предельно четко


Какие блядь мысли? Там полный пук-среньк, а не мысли. Ты тут уже несколько постов усираешься мне что-то доказать, но при этом не привел пример когда нужно итерироваться по индексам, а не значениям. Единственное, что я могу назвать это инициализация пустого массива. Все остальное или значение или индекс+значение удобнее.
Стикер512x512
552 2655635
>>54705

>бизнес процесс добавить в корзину уже отдельный микросервис.


И запускать на AWS Lambda пусть кабан удивится счетам за хостинг.
553 2655655
>>55629

>Ты тут уже несколько постов


Ты меня перепутал с другим аноном (кажется, тебе об этом уже говорили).

>пример когда нужно итерироваться по индексам, а не значениям


Любой код, изменяющий элементы массива, КО на связи.
554 2655661
Так. У меня есть интерфейс с констрейнтами и мутатором.
`
type A struct {}
type B struct {}
type AB interface {A|B} {
mutator()
}
func (x AB) mutator() {
}
`
А это весёлая птица-синица, то есть конструктор
`
func ABCreator[T AB] () T {
return &T{}
}
`
Вот кот, Который пугает. то есть вызов коструктора:
`
var a = ABCreator[A]
`
И тут я получаю, что A нельзя использовать в качестве AB. потому что AB имеет метод с поинтер-ресивером.
Я долго курил SO, и там предложили сделать ЕЩЁ ОДИН интерфейс
`
type ABP[T AB] interface {
T
}
`
И таскать его ВСЮДУ за собой, типа
`
func ABCreator[T AB, P ABP[AB]] () P {
return &T{} // кажется так, тут я ХЗ что писать
}
`
Это же уродливо. Мне везде надо за собой таскать ABP, только потому что мне нужен поинтер-ресивер...
554 2655661
Так. У меня есть интерфейс с констрейнтами и мутатором.
`
type A struct {}
type B struct {}
type AB interface {A|B} {
mutator()
}
func (x AB) mutator() {
}
`
А это весёлая птица-синица, то есть конструктор
`
func ABCreator[T AB] () T {
return &T{}
}
`
Вот кот, Который пугает. то есть вызов коструктора:
`
var a = ABCreator[A]
`
И тут я получаю, что A нельзя использовать в качестве AB. потому что AB имеет метод с поинтер-ресивером.
Я долго курил SO, и там предложили сделать ЕЩЁ ОДИН интерфейс
`
type ABP[T AB] interface {
T
}
`
И таскать его ВСЮДУ за собой, типа
`
func ABCreator[T AB, P ABP[AB]] () P {
return &T{} // кажется так, тут я ХЗ что писать
}
`
Это же уродливо. Мне везде надо за собой таскать ABP, только потому что мне нужен поинтер-ресивер...
555 2655663
Сука.
type A struct {}
type B struct {}
type AB interface {
A|B
mutator()
}
func (x #AB) mutator() {
}

func ABCreator[T AB] () T {
return &T{}
}

type ABP[T AB] interface {
#T
}
`
func ABUglyCreator[T AB, P ABP[AB]] () P {
return &T{}
}

Йобаная макаба.
Если я напишу
type AB interface {
A|B
}
то я хз как писать конструктор, мне скажут поинтер не тип.
555 2655663
Сука.
type A struct {}
type B struct {}
type AB interface {
A|B
mutator()
}
func (x #AB) mutator() {
}

func ABCreator[T AB] () T {
return &T{}
}

type ABP[T AB] interface {
#T
}
`
func ABUglyCreator[T AB, P ABP[AB]] () P {
return &T{}
}

Йобаная макаба.
Если я напишу
type AB interface {
A|B
}
то я хз как писать конструктор, мне скажут поинтер не тип.
Йобаная макаба 556 2655671
:(
staticfileserver.jpg80 Кб, 1588x406
557 2655857
Почему не работает маршрут со статическими файлами? Их перехватывает маршрут на "/", хотя должен показываться файл main.html.
558 2655880
>>55857
main.html у тебя по моему висит на /static, а ты еще сверху хуйни дописал в url, поэтому он берет дефолтный.
559 2655883
>>55880
Даже по запросу http://localhost:5000/static выдается Root.
Тем более весь смысл именно в том, чтобы он обрабатывал все файлы в папке static. Там всякие js, css файлы, картинки и т.п.
560 2655886
>>55883
Может надо не '/static' а '/static/'?
staticfileserver2.jpg85 Кб, 1589x444
561 2655910
>>55886
Разобрался! Запрос возвращается с префиксом /static, поэтому надо его откусить, чтобы он правильно подставился к папке.
Опаньки 562 2656122
Делай раз - https://go.dev/play/p/-M1Z9V3KBjx
Делай два - https://go.dev/play/p/mkLZ1pCwBu_X

Как только мы добавляем ещё один слой .. с дженериками? ломается pointer receiver.
563 2656468
>>55655

>Ты меня перепутал с другим аноном (кажется, тебе об этом уже говорили).


Повторяю для тупых:

>Мудило! Это анонимная борда, я отвечал на сообщение, в душе не ебу сколько там семенов.



>>55655

>Любой код, изменяющий элементы массива, КО на связи.


То что ты читаешь жопой я уже понял

>или индекс+значение удобнее

564 2656675
>>56468
Ты отвечаешь не на то сообщение.

Зачем индекс+значение, если мне нужен только индекс?

хватит засирать тред
565 2656680
>>55661
>>55663
>>55671
Ты заебал, пости код в пастебин. https://paste.opensuse.org/pastes/new

>>56122
Ты заебал со своими ебучими шарадами! У тебя ж во втором случае метод вообще не определен, в отличие от.
566 2656729
>>56675

>Зачем индекс+значение, если мне нужен только индекс?


Ты туповат, но для Говно разработчика это норма.

Итак, для аутистов еще раз. Ты Disclaimer: или кто-то другой кто спизданул в этом треде. Я семенов сортировать не собираюсь спизданул:

>Любой код, изменяющий элементы массива


Чтобы что-то менять надо иметь старое значение эта мысль может быть не очевидна для даунов, но это правда. И тогда

>индекс+значение удобнее


не надо будет slice делать, можно сразу slice = transform(superStruct).

Ждем вскукареков про то что slice читабельней чем superStruct потому что ко-пок.
567 2656733
>>56729

>не надо будет slice делать


slice_[_i_]
Ябучая макаба!
image.png185 Кб, 501x500
568 2656868
>>56729

>Чтобы что-то менять надо иметь старое значение


вообще-то иметь возможность обратиться к старому значению которое лежит по правильному адресу, ведь копию также можно назвать "старым значением" во многих контекстах
569 2657491
>>56729

>Чтобы что-то менять надо иметь старое значение


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

>slice = transform(superStruct)


Я ошибся в предыдущем спойлере, нейминг выдает в тебе студентоту-вкатыша.

>читабельней чем


Разумеется в большинстве случаев доступ по индексу будет читабельней, чем смесь из доступа по индеку в lhs и нового биндинга.

Про то, что в отдельных случаях копия значения != само значение тебе уже пояснили.
570 2658556
Два вопроса.
1. Как писать миграции на буне, если я не хочу отлелоьно выписывать sql? Чтобы он по структуре сгенерил мне таблицу. Официальная документация какая-то туманная.
2. Как правильно писать тесты на го? Что почитать на эту тему?
571 2658707
Нахуя нужны pointers в Go? Где их вообще применять?
572 2658711
Сам язык неплохо описан, но вот стандартная библиотека плохо. А про написание реальных приложений инфы вообще ноль. Все учебные курсы рассказывают как написать примитивный http-сервер через один HandleFunc и ListenAndServe. Но реальные приложения так не пишутся.
Базы? Ну рассказывают как подключиться, там выполнить запрос. А миграции? Транзакции? Ноль инфы.

В общем, выйти на уровень профессионального разработчика невозможно из-за отсутствия инфы.
573 2658782
>>58707
Везде. В го нет ссылок. Это слишком сложно для простого языка. И если ты хочешь менять значение - надо передавать указатель. А если ты хочешь менять значение вызывателя - тебя ждут незабываемые чамы и дни. Даже моя привыкшая к void* жопа отказывалась принимать с первого раза. Неявное кастование приятно щекочет простату.
574 2658789
>>58782

>ссылки


>нельзя менять значение



Хуя се, и правда. Почему соевики не уделили внимания в Go Tour этим простым, но в то же время важным вещам?
575 2658871
>>58789
Потому что это понимает каждый, каждый это понимает с детства. Но ему ныжно объяснить Иначе он не поймёт ничерта.
image.png166 Кб, 735x416
576 2658970
>>58556

>1. Как писать миграции на буне, если я не хочу отлелоьно выписывать sql? Чтобы он по структуре сгенерил мне таблицу. Официальная документация какая-то туманная.

577 2658980
>>58711

>Все учебные курсы рассказывают как написать примитивный http-сервер через один HandleFunc и ListenAndServe. Но реальные приложения так не пишутся


в больших компаниях у тебя будет шаблон main.go, где нужно тупа зарегать хендлеры/прокинуть репозитории/сервисы, даже ListenAndServe за тебя уже есть в копипасте.
578 2659010
>>58871
После скриптовых языков не очевидная хрень. Если нулевой или С господин, то вопросов нет.
579 2659011
>>58980
Я ещё слышал, что надо писать промежуточное ПО, уметь делать валидацию форм, логирование, авторизацию и всё это уметь тестировать. Но инфы по этим темам нет. Есть курсы для новичков, где в лучшем случае делают примитивные примеры, а как это реализуют в реальных приложения - не пишут.
580 2659080
>>58711

>миграции, транзакции


Помешанный шизоид на ОРМ, ты? Откуда только таких джунов понабрали, которые без орм ебучую миграции не осиливают блять…
581 2659082
>>59011
Инфы по этим темам дохуя и больше, называется QA, сейчас половина вкатунов туда лезет.

>валидация форм


Ты на ГОвняшке фронт умудряешься писать?
582 2659083
>>59082

>на ГОвняшке фронт


А чо, кстати, через васм тема. Язык-то простой!
583 2659093
>>59080
Я и орм не знаю.

>>59082
Есть же html-шаблоны, то почему бы не написать?

А вообще, я рассчитывал на ссылки на учебные материалы, которых, как вы говорите, дохуя, но когда просишь, то никто не скидывает.
584 2659099
>>59093
Нахуя нам ради тебя открывать гугл и искать что то? Потом еще и слушать твое нытье если статья окажется хуйней.
Открыл гугл и завалил пиздак, ВСЕ, никто не носит с собой коллекцию не нужных им статей, не все настолько тупые как ты
585 2659125
>>59099
А нахуя ты вставляешь своё тупое мнение тогда? И в отличии от тебя, тупого пиздабола, я уже гуглил эти темы. И на основе это опыта утверждаю, что учебных материалов в свободном доступе нет. Но тут высирается очередной тупоголовый уёбок, который не погуглив, не проверив этот вопрос, высирает своё тупое мнение, что материалов там якобы дохуя. А когда его просят скинуть хотя бы пару ссылок, то сразу сливается со словами, что ему нахуй не надо что-то искать за других. Дак нахуя ты лезешь со своим мнением? За слова отвечать не учили?
586 2659143
>>59125
Неосилятора миграций без ормки порвало, классика
587 2659586
>>59011
большая часть этого к го как таковому не относится и везде немножко по-разному будет сделана с разными либами. на каждой работке придется привыкать к чему-то новому, главное понимать принципы, а они вообще языконезависимы.
если ты вкатывальщик, то тебе как стажеру принципы объяснят и у тебя будет там ~3 месяца, чтобы это вдуплить на реальных примерах сервисов твоей команды нужно только понимать как делать по подобию.
588 2659587
>>59125
Съеби в прикреп. Тут не рады очередным вкатунам, тут тред про унижение авторов го.
589 2659833
>>59587
Да тут никому не рады. Это же двач.
590 2660150
Микросервисы это база, или похуй и все пишут монолит?
591 2660160
>>60150
в этом квартале тупо одну единственную табличку БД из сервиса вынесли в отдельный сервис. овер 1500 сервисов в компании
592 2661019
Только устроился работать фронтендером но думаю уже как перекатиться на голанг. Скажите это реально без опыта на других языках бэка (кроме node.js время от времени) и если нет с какого языка больше всего шансов на го потом перекатиться?
593 2661114
>>61019
от компании к компании зависит, вряд ли можно дать общий ответ.
я думаю у нас тебе нужно будет сообщить HR о том, что ты гомосексуал у тебя опыт только с ЖС, но ты хочешь пойти в роли полноценного заднеприводного. тебе скорее всего подыскали бы инженера, который может на ЖС провести секцию по бэку. но тут уже зависит от готовности/желания самих интервьюеров, а гошников у нас больше, чем перекатчиков с ноды
594 2661738
Какой роутер мне следует использовать?
595 2661828
Кажется я понял, почему у голанга такой высокий индекс вката и не могут найти разработчиков. А всё потому, что нет учебных материалов. Авторы написали одну книгу как гонять байтики, а книги по написанию реальных приложений никто не написал.
596 2661929
Про разработку приложений написаны 1000 и одна книга. Просто берёшь и пишешь вместо джавы на го.
597 2661953
>>61929
Нужна книга, где рассказывают про всякие миддлвари, авторизацию, миграции.
598 2661963
>>61953
Боюсь, тебе это не поможет.
599 2661982
>>61953
Если ты НАСТОЛЬКО тупой, то книга тебе уже не нужна
600 2661984
Ой вей братья мои, васалам алейкум, а перекат будет ле бля
601 2661989
https://youtu.be/-cX0CqG6rgA
Почему такая разница в сортировке интов и интерфейсов?
602 2661991
>>61963
Я за месяц Go Core изучил

>>61982
А ты сразу родился с этими знаниями? Наверняка бегал за сеньорами и просил рассказать про мидлвари.
603 2662007
>>61953
зачем для этого книга? это по говностатейкам на медиуме учится
604 2662010
>>62007
В книге собрана вся нужная инфа и проверена рецензентами. А статейки пишут кто не попадя и их никто не проверяет. Тем более в сотне статеек сложно ориентироваться, если не знаешь какие темы тебе вообще нужны.
Вот выше я озвучивал некоторые из них, а сегодня узнал ещё про контекст. А если бы мне не повезло и я бы про него не узнал? Так что лучше прочитать добротную книгу и получить весь объём знаний, чем прыгать по статейкам с пустой головой.
605 2662072
>>61991
То есть ты готур месяц проходил? Хехмда
606 2662073
>>61989
Тому що индирекшон вестимо видево не смотрел, профайлер не запускал
607 2662126
>>62010

>В книге собрана вся нужная инфа и проверена рецензентами. А статейки пишут кто не попадя и их никто не проверяет


там выше была книжка, которая написана прожжённым шарпистом, которую ревьюил другой прожжённый сертифицированный майкрософтом шарпист. ты больше получишь от того, что 5 статей от индусов с плюрализмом мнений прочитаешь и составишь своё, чем такую графоманию от залетного хуя, который рассасывает её на 30 страниц.
608 2662144
>>62010
Ты из тех самых верунов, думающих что книги пишут умные люди? Эти книги пишут нищуки, которым в айтишке не платят, поэтому приходится идти как книгописец, тогда их и начнут брать, ведь ЦЕЛОЯ КНИГА
609 2662399
>>62126
>>62144
А как вы учили голанг уровня энтерпрайз?
610 2662439
>>62399
Я просто пишу свои проекты и все, хватить пытаться делать все, лишь бы не само программирование, его так и надо учить, брать и тупо кодить, что то не понимаешь или нужно - открываешь гугл и гуглишь что тебе конкретно надо найти, го тур только пройти не забудь
611 2662579
>>62439
Я пытался гуглить маршрутизаторы, но там в каждой статье по разному пишут. В итоге так и не понял что и как писать. Ещё бывает с ошибками пишут, которые не сразу замечаешь.
Непосредственно про маршрутизаторы в старых статьях пишут, что надо использовать гарилу, а сейчас встретил инфу, что гарилу нельзя использовать, потому что она всё. И кому верить?
612 2662580
>>62399
Эм. Пчел, есть энтерпрайз-программирование. И есть язык го, для которого даже готур проходить неоябательно. Го в определённом смысле реально простой - в нём куда ни ткнёшься, ничего нет, учить буквально нечего. Зажача стоит как выразить лучшие практики программирования на этом зяыке, в котором ничего нет. Но это приходит только с практикой.
613 2662582
>>62580

>энтерпрайз-программирование


Какую книгу почитать, чтобы изучить это энтерпрайз-программирование?
614 2662585
>>62579
Тогда с чего ты взял, что в книге будет единственно правильное мнение? Особенно с учетом, что книга в 99% случаев - устаревшая. Роутер устареть никак не может если что, его просто перестали поддерживать и выпускать фиксы
615 2662593
>>62585
Книгу я хочу, потому что там описаны другие темы: миграции, авторизации, контексты и т.п. Откуда я вообще это должен всё узнать? Это как дать человеку, который не умеет читать, учебник русского языка и удивляться, почему он до сих пор не начал читать/писать по-русски.
616 2662649
>>62399
ну я пришел на работу стажером после прохождения го тура и делал по подобию как в команде принято. лазил по внутреннему гитлабу и искал что круто выглядит. лазил по гуглу читал говностатейки
617 2662749
>>62580
Если настолько простой то почему пишут что не подходит для первого языка и для изучения программированию?
618 2662775
>>62649
Тебе повезло. Считай всему научили на работе. А я вот дома самостоятельно всё учу, а это в разы тяжелее.
619 2662843
>>62749
Не знаю. На мой взгляд, он вообще ни для чего не подходит.
620 2662884
>>62593
Используя библиотеки и нарисовал свои петы ты в любом случае так или иначе столкнешься с этим, а дальше уже конкретный вопрос забиваешь в гугл, почему до тебя этот не доходит то
621 2663026
>>62775
ну слушай метрики логирование это совершенно минорные штуки, которые даже в топовых компаниях часто делают на отъебись и всё меняется от команды к команде. у нас на собесах например вообще нет вопросов по этому, максимум на финальном собесе тебя спросят с какими технологиями ты работал и ты можешь там прометеус/эластик упомянуть. но всем будет понятно, что если челик учил эту хуйню самостоятельно без команды, то грош этому цена. аутентификация это еще та залупа, с которой вероятно даже не придется столкнуться, будешь сразу userID в хедере получать.
622 2663027
>>62775
а ну и бля. в той залупе даже код ревью не проводили, я тупо мержил свой говнокод себе в мастер. так что повезло не повезло.
ну и вообще я к тому, что тебе эта хуйня не должна помешать пройти собес и уже учиться у команды.
623 2663030
>>63026

>аутентификация это еще та залупа, с которой вероятно даже не придется столкнуться, будешь сразу userID в хедере получать


ну и если это не так, то с JWT разобраться и написать себе мидлварю можно буквально за день
624 2663618
А берут вообще на работу челиков без опыта на других бекенд языках?
625 2663622
Хорошо знаю плюсы. Хочу закомиттить в опенсурс на го. Долго учить?
626 2663638
>>63622
Учить не долго, но потребуется время на охлаждение жопы в процессе.
627 2663672
>>63622
Вангую, что пулреквет не примут. Даже если ты закоммитишь реализацию нормальных дженериков в сам го - тем более не примут.
628 2663754
>>63618
меня взяли но тогда время было другое...
629 2663823
Эм. Я правильно понял, что попытки писать типобезопасно - это слишком сложно для простого языка? Нам нади интерфейсы, и мы должны радоваться?
630 2663901
>>63823
Ну типа
631 2663991
Почему мне никто не помогает?
632 2663994
>>63991
чтото из этого:

ты не спросил
ты психический инвалид
ты некорректно ставишь вопрос
ты не там спросил
633 2664009
>>63994
Я изучил го кор, но не понимаю как писать реальные веб-приложения, потому что не могу найти инфу.
Сейчас скачал какой-то видеокурс и там тоже самое. Рассказывают про стандартную библиотеку net/http, а примеров написания реального приложения не дают.
634 2664011
>>63901
Хм. Где бы об этом почитать. Именно о философии, приемрно как написано 100500 книг и статей о философии ООП.
Потому что в голове как-то не совсем укладывается. То есть оно работает, да, хотя ко(нтр)вариантности не хватает, но в жабе или шарпе я уверен, что если я хлрошо прописал типы, то у меня всё правильно работает. А с этими интерфейсами, которыми может прикрыться кто угожно в любой момент...
635 2664012
>>64011
Я вот про то же. Книг по голангу вообще нет. А те, которые есть, описывают только основы. А как это всё применять на практике - не понятно.
636 2664028
>>64012
Тебе десять раз сказали - читай любую книгу по паттернам, по энтерпрайз-приложениям. Просто пиши не на жабе, а на го. Зачем тебе вообще го, если ты не можешь даже этого понять?
637 2664033
>>64028
На го самый высокий индекс вката, поэтому решил изучать го, чтобы наверняка вкатиться
638 2664062
>>64033
На го сложно вкатиться. Туда берут уже с опытом на пхп или других языках
639 2664068
>>64062
Обидно, а ведь уже потратил почти 2 месяца получается в никуда.
640 2664071
>>64009
https://suraj-batuwana.medium.com/complete-golang-microservice-example-5857d65eb80f

погугли разные варианты ("golang example"), желательно самому писать первое время без всяких gin/chi
641 2664249
Почему в VS Code не работает линтер? Делал всё по видео-гайду, но у чувака всё работает, а у меня нет. Остальные фишки работают, но вот линтер - нет.
image.png50 Кб, 314x288
642 2664661
Почему этот язык настолько не интуитивно понятная пастулька? Запринтит [0 1 2 4] если что для обоих случаев
643 2664723
>>64661
чтоб на собесах залетных отфильтровывать
644 2664756
>>64068
Если у тебя го вообще первый язык то тогда сложновато, лучше питон/ноду годик а потом го. Если у тебя есть опыт программирования на других язык, и ты в целом идешь не с одной прочитанной книгой на собес, то шансы есть. У меня месяц ушло на получение оффера. Портфолио не забудь, хотя бы какие-нибудь круды туда покидай типа простых апишек. Иначе hr твое резюме даже смотреть не будет.
645 2664758
>>64756
Я учил сишарп и джаву до этого, но в сишарпе нет кроссплатформенности и обратной совместимости, много сахара, а в джаве кривые инструменты и надо покупать платную идею, чтобы писать веб-приложения.
646 2664763
>>64758
В таком случае не парься, шансы есть. Тебя больше по докеру, базам, микросервисам гонять будут чем по языку. Хотя конечно зависит от собеса. Могут что-то типа этого >>64661 или классика о том почему переменная цикла в замыкании выводит 10 раз 10, а не 1, 2, 3 и т.д
Пройдись по основным моментам, как шедулер работает, сборщик мусора, оч. рекомендую прочитать Concurrency in Go: Tools and Techniques for Developers. А так могу пожелать только удачи и не слушать тех кто отговаривает.
647 2664871
>>64758
Хорошему программисту сахар мешает. И платная идея. Чувак, учи лучше 1С, или там PHP5. Будешь вордпрессы хуярить пачками. Вордпресс грязный, вонючий, за него платят мало, но его можно хуярить пачками.

А здесь... да, работа с сетью как элемент языка это забавно. НО БЛЯДЬ ЕХАЛ ANY ЧЕРЕЗ ANY.
Что можно запистаь в базу? Правильно, any. Что можно передать по сети? Ну-ка, дети, мы про него стишки учили и рассказы читали? Правильно, any! На выходе тот же PHP5 получается, только с горутинами.
648 2664875
>>64871
Алсо, чего-чего там в шарпе нету? Я не расслышал?
649 2664918
>>64871
Ты не прав, надо передавать срез байт по сети, а не интерфейс.
650 2664927
>>64871
Я в универе писал lab.cpp и мне очень нравилось гонять байтики. Поэтому подход го мне ближе, чем заоблачные абстракции джавы и сишарпа.

>>64875
Сейчас во всех дистрибутивах линупса удалили дотнет6 и оставили только 7. В итоге фиг запустишь программы для дотнета6 или более поздней версии.
Ещё вижла только под винду. Ещё асп.нет надо переучивать каждый год.
651 2664940
>>64918

> надо передавать срез байт по сети, а не интерфейс


Для этого есть C.
652 2664941
>>64875
Просто для сравнения. Я могу поставить голанг на старенький ноут и программировать на нём в любом текстовом редакторе. А для джавы надо ставить монструозную идею, которая жрёт по 4 гига в простое и тормозит безбожно. А сишарп надо ковырятся с подгонкой нужного дотнета, да и среды для линуксов толком нет. А среда нужна, потому что сама структура проектов требует объединения их в солюшены. А солюшены поддерживаются только вижлой в винде. Сами микрософты официальным решением проблемы предлагают ставить виртуалку с шин11 и даже сделали готовые образы.

>>64940
На Си работы нет толком.
653 2664949

> во всех дистрибутивах удаллили dotnet LTS


> на го можно писать в блокноте, а на жабе только в платой идее


> го скомпилируется и запуститится на первопне


> асп надо полнолстью переучивать каждый день, ПОЛОНСТЬЮ, КАРЛ!


> я вот писал в универе лабу на десять строчек, и хочу такую же работу, чтобы два байта переслать надо было, я слышал что байты шлют на голанге и платят за это 500к/нс


> ни в одной книге по голангу не написано, какой роутер использовать и зачем он нужен


> ваши советы говно, я буду продолжать есть суп ножом и ныть



Уходи. Скатил тред в несмешной цирк.
654 2665042
>>64949
Я всё равно не буду возвращаться в твой джавошарп
655 2665058
>>64763
Тащемта правильно отговаривают. Сейчас даже на пхп вакансии по 100 откликов. А на гошечке (на которую мечтают сьебать пхпшники) это вообще анрил. Мало вакансий с кучей откликов от опытных пхпистов. Это ещё при том что у самих пхпистов сотни желающих вкатунов. А это самый простой язык для вката
656 2665065
>>65058
Опытные пхписты привыкли писать в рамках фреймворка типа ларавеля или симфони, а тут надо самому писать фреймворк. Из-за этого вкатиться в голанг сложнее.
657 2665072
>>65065
Я на голанге вообще без фреймворка пишу. Язык достаточно прост и удобен для этого. Всем похуй. Вот и сижу в своем пхп болоте.
658 2665097
>>65072

> удобен

ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ 659 2665439
Интерфейсы ПрограммистОчка 660 2666214
Я уже почти год бахаю на го, и уже почти месяц работаю в компаниянэйм, но я, блять, до сих пор не понимаю интерфейсы, есть ресурсики где можно доступно за это узнать
661 2666839
>>64009
Расскажу тебе все за $30 в час. пинджак у меня есть
662 2666840
>>64011

>но в жабе или шарпе я уверен, что если я хлрошо прописал типы, то у меня всё правильно работает


Рубрика "программисты шутят".
Тред утонул или удален.
Это копия, сохраненная 7 июня 2023 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски