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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Go тред №18 /go/ 2165418 В конец треда | Веб
Cамого МУЖЕСТВЕННОГО в мире языка Go тред №18 /go/

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

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

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


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

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

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

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

Ламповая конфа треда: t.me/golang2ch и даже активная

Предыдущий тред умирает здесь: >>1986204
Шаблон шапки: https://pastebin.com/vmWawK2t
# OP 2 2165420
Предыдущий загнивает здесь: >>2119331 (OP)
3 2165429
Goвноеды, как вам писать на языке для даунов загнанными в жесточайшие рамки и лишенными всего?
4 2165430

>golang


> Я только сегодня понял, что почти никто толком-то и не понимает, зачем вообще Go нужен. Если коротко, то Go нужен для того, чтобы проектировать robust software. Я не знаю, как правильно перевести это слово на русский, но это скорее всего что-то вроде «надежный». Так вот, Go сделали, потому что гуглу нужен был инструмент для написания надежного кода. На самом деле не сколько гуглу, сколько Робу Пайку, который последние две декады, как минумум, одержим идеей сделать сишку с каналами и зелеными потоками. Так получилось, что Роб Пайк попал в нормальную компашку с другими штрихами из Bell Labs, крутейшим Russ Cox, Фицпатриком и т.д. Этим ребятам несложно было убедить гугл, что им нужен новый язык и вобщем-то, бабосики они на него выбили.



> Так, это было небольшое лирическое отступление, давайте вернемся к теме. Да, зачем же все-таки гуглу был нужен новый язык? Ну, тут все понятно, давайте послушаем слова самого Роба Пайка:



> Фишка в том, что наши программисты гуглеры, а не ученые. Это обычно молодые, только выпустившиеся пацаны, которые возможно выучили Java, возможно даже C/C++ и может быть Python. Они не в состоянии понимать пробздетый язык, но мы все равно хотим, чтобы они делали хороший софт. Таким образом, мы даем им легкопонимаемый язык, к которому они быстро привыкнут.



> А теперь давайте попытаемся понять, что же он имел ввиду. Если грубо говоря, то он сказал, что в гугле работают не самые умные ребята («не способные понимать крутой язык»), так что они придумали такой язык, который просто невозможно не понять. Это на самом деле очень круто для менеджмента. Посудите: можно нанять 100 посредственных программистов, дать им в руки Go и эта армия обезьян будет генерить вам много «неплохого» и очень даже поддерживаемого кода! Go это фантастический инструмент для менеджмента, лучше не придумать: моментально загоняем всех программистов в рамки go-fmt (никто не сможет пропихнуть свой стиль форматирования), забираем у них любые абстракции сложнее интерфейса и получается такой конвеер кода, в котором developer is just another brick in the wall. По-моему, очень круто! Ну, программистам скорее всего такой расклад не очень понравится — мало кто любит быть винтиком в системе.

4 2165430

>golang


> Я только сегодня понял, что почти никто толком-то и не понимает, зачем вообще Go нужен. Если коротко, то Go нужен для того, чтобы проектировать robust software. Я не знаю, как правильно перевести это слово на русский, но это скорее всего что-то вроде «надежный». Так вот, Go сделали, потому что гуглу нужен был инструмент для написания надежного кода. На самом деле не сколько гуглу, сколько Робу Пайку, который последние две декады, как минумум, одержим идеей сделать сишку с каналами и зелеными потоками. Так получилось, что Роб Пайк попал в нормальную компашку с другими штрихами из Bell Labs, крутейшим Russ Cox, Фицпатриком и т.д. Этим ребятам несложно было убедить гугл, что им нужен новый язык и вобщем-то, бабосики они на него выбили.



> Так, это было небольшое лирическое отступление, давайте вернемся к теме. Да, зачем же все-таки гуглу был нужен новый язык? Ну, тут все понятно, давайте послушаем слова самого Роба Пайка:



> Фишка в том, что наши программисты гуглеры, а не ученые. Это обычно молодые, только выпустившиеся пацаны, которые возможно выучили Java, возможно даже C/C++ и может быть Python. Они не в состоянии понимать пробздетый язык, но мы все равно хотим, чтобы они делали хороший софт. Таким образом, мы даем им легкопонимаемый язык, к которому они быстро привыкнут.



> А теперь давайте попытаемся понять, что же он имел ввиду. Если грубо говоря, то он сказал, что в гугле работают не самые умные ребята («не способные понимать крутой язык»), так что они придумали такой язык, который просто невозможно не понять. Это на самом деле очень круто для менеджмента. Посудите: можно нанять 100 посредственных программистов, дать им в руки Go и эта армия обезьян будет генерить вам много «неплохого» и очень даже поддерживаемого кода! Go это фантастический инструмент для менеджмента, лучше не придумать: моментально загоняем всех программистов в рамки go-fmt (никто не сможет пропихнуть свой стиль форматирования), забираем у них любые абстракции сложнее интерфейса и получается такой конвеер кода, в котором developer is just another brick in the wall. По-моему, очень круто! Ну, программистам скорее всего такой расклад не очень понравится — мало кто любит быть винтиком в системе.

5 2165435
>>165430
>>165429
Понятно, снова из палаты убежал, дружище?
6 2165483
>>165435
Прибежал же.
7 2165500
>>165483
Прибежал из палаты.
8 2165509
>>165500
В палату.
29b0c7eeb567bc76c0a83021f3210348.jpg29 Кб, 300x251
9 2165737
>>165430
отправляйся к себе в шарпы/жабу/пидон или откуда ты там вылез, и не мешай нам тут
10 2166446
Здравствуйте, меня зовут Анон и я долбоёб. Что я, блядь, делаю не так? Программа простейшая же. Дебаг уезжает куда-то в бесконечный вызов системного стека и виснет нахуй после ввода значения.

[code]
package main

import (
"bufio"
"fmt"
"math"
"os"
"strconv"
"strings"
//"errors"
)

func main() {
phrase := "Counting the circles..." //string

fmt.Println(phrase)
fmt.Println("Please select radius for a circle")
reader := bufio.NewReader(os.Stdin)
rad, _ := reader.ReadString('\n')
rad = strings.Replace(rad, "\n", "", -1)
numrad, e := strconv.ParseFloat(rad, 64)
if e != nil {
fmt.Println("Conversion error", rad)
}
circlearea(numrad)

}

func circlearea(p float64) {
area := (math.Pow(p, 2)) * math.Pi
var printable string = strconv.FormatFloat(area, 'f', 6, 64)
fmt.Println(printable)
[/code]
}
10 2166446
Здравствуйте, меня зовут Анон и я долбоёб. Что я, блядь, делаю не так? Программа простейшая же. Дебаг уезжает куда-то в бесконечный вызов системного стека и виснет нахуй после ввода значения.

[code]
package main

import (
"bufio"
"fmt"
"math"
"os"
"strconv"
"strings"
//"errors"
)

func main() {
phrase := "Counting the circles..." //string

fmt.Println(phrase)
fmt.Println("Please select radius for a circle")
reader := bufio.NewReader(os.Stdin)
rad, _ := reader.ReadString('\n')
rad = strings.Replace(rad, "\n", "", -1)
numrad, e := strconv.ParseFloat(rad, 64)
if e != nil {
fmt.Println("Conversion error", rad)
}
circlearea(numrad)

}

func circlearea(p float64) {
area := (math.Pow(p, 2)) * math.Pi
var printable string = strconv.FormatFloat(area, 'f', 6, 64)
fmt.Println(printable)
[/code]
}
11 2166449
>>166446
Настолько долбоёб, что не могу нормально оформить код.

https://pastebin.com/uj0AeWRQ
12 2166454
>>166449
func syscall_Syscall6(fn, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr) {
lockOSThread()
defer unlockOSThread()
c := &getg().m.syscall
c.fn = fn
c.n = nargs
c.args = uintptr(noescape(unsafe.Pointer(&a1)))
cgocall(asmstdcallAddr, unsafe.Pointer(c))
return c.r1, c.r2, c.err

Виснет вот тут в процессе обработки. Чё ему не нравится - понять не могу.
13 2166471
>>166454
Переписал.
https://pastebin.com/gY1F0Xf3
Повисло абсолютно там же. Конкретно вот на этой строчке всё в пизду летит.

> cgocall(asmstdcallAddr, unsafe.Pointer(c))


В описании функции вот такая хуйня:

> Call from Go to C.


Нужен С в зависимостях, или как это должно работать?

Не пиздите тряпками, плез, я кода никакого джва года не писал, SQL не в счёт.
14 2166491
>>166471

> so you cannot use gopls and vscode with static libraries


> https://github.com/golang/go/issues/35721


Ну блядь заебись.
15 2167312
Эй, говнари, я вам персональную домашнюю страничку Пайка принёс: https://robpike.io
16 2167317
ГОвну >>165737 как всегда нечего ответить.
Пукнул в тред.
17 2167349
аноны, подскажите пж перевкатышу с джавы на го, где найти нормальные гайд\туториалы\книги по бэку на го. Всё что не находил - с места в карьер сразу, без каких-либо дополнительных объяснений
18 2167435
>>165429
Не знаю, ведь я никогда не писал на джаве
19 2167592
>>167349
Мне вполне зашла книга, которая Язык программирования Go. Все вполне себе кратко изложено для тех, кто уже знаком с программированием, ну т.е. не скучаешь. И практических заданий завались, особенно начиная с горутин и каналов, дают просраться не слабо. Собственно после этой книги я уже свободно писал на Go, посматривая в документацию.
20 2167643
>>167592
Окей, глянул содержание - я так понял это книга больше по основам Go, чтобы выучить всякую многопоточку, ну и вообще не быть лохом в базовом синтаксисе. Ну а по бэкенду? Книги\туториалы по написанию тех же простеньких RESTApi, или CRUDа с какой-нибудь БД где можно откопать, пока нашел на гитхабе какие-то полу-гайды
21 2167695
>>165429

>Goвноеды


бля в голосину обосрался
22 2167785
>>167643
Вот полных гайдов нормальных не думаю что найдешь. Просто придумываешь идею для сервиса и идешь гуглить фреймворки/либы под это дело, если чего-то не находишь - пишешь сам.
Например нужен тебе микросервис с REST API и коннектом к базе.
Ищешь HTTP фреймворк, тот же Gin, например, супер простой. Ищешь коннектор к PostgreSQL/MySQL/etc. Если какое-то взаимодействие между сервисами, то можно GRPC впилить. И так далее. Изучаешь их по отдельности и пишешь код.
23 2167808
>>167785
Понял, благодарю
24 2168039
>>166446
Так оно же ждет \n в stdin. Попробуй go build -o /tmp/bin . && echo 42 | /tmp/bin
25 2168300
как обстоит вопрос с трудоустройством джуном\интерном? открыл хх - всего пару вакансий, большинство хотят мидлов и синьоров
26 2168338
>>168300
Начинающие на Го не нужны. Только опытные бэкэндеры и девопсы.
27 2168410
>>168338
и чего делать начинающим на Го?
28 2168417
>>168300
Хуже чем с другими языками, но тоже реально. Позаходи на сайты крупных фирм, на "галеры", так называемые.
29 2168418
>>168410
Идти нахуй, очевидно же
30 2168445
>>167349
Макгаврен Д Изучаем Go
31 2168469
>>168410
Есть вариант дослужиться до мидла/синьера на другом языке, а затем свичнуться, большая часть гоферов по такому пути пришли. Но это всё фигня, вкатунов в го всё равно меньше чем вакансий ждунов, смело иди на собесы
32 2168472
Кто тут го2 ждал? Его нету у меня, но зато есть го++ для ученых-на-говне-печеных https://github.com/goplus/gop#error-handling
33 2168499
Если допустим репозиторий выбросил ошибку что низя делать инсерт, то полагается прямо ошибку постгрес драйвера в контроллере обрабатывать, или же делать свой тип ошибки, обработать всю постгрес хуйню в репозитории при сохранении и в контроллере уже только проверить что ошибка кастомного типа "nemogusohranitoshibka.go"?
34 2168501
>>168472
А хорошо выглядит
интересно, они стрелочки специально сделали, что бы сделать вид, что это не питон
35 2168525
>>168469

>вкатунов в го всё равно меньше чем вакансий ждунов


Опять охуительные истории про дефицит кадров
36 2168583
>>168499
Суть паттерна репозиторий в том, чтобы абстрагировать слой данных от остального приложения. Т.е. хорошо написанный репозиторий должен быть легко заменяем другой имплементацией без изменения кода приложения. Так что да, я всегда создаю отдельный пакет репозиторий, который содержит интерфейсы репозиториев всяких сущностей + определения ошибок или просто их значения, т.к. в большинстве случаев хватает именно синглтона ошибки стандартного типа
37 2168587
>>168525
Ну я тоже верил в шизотеории про то, что вкатуны с говнокурсов если не сегодня то завтра точно отберут у меня работу, но потом меня повысили, я стал проводить больше собеседований и я понял на сколько это далеко от правды. У меня теперь другая шизотеория, что курсы на самом деле отупляют людей, которые до этого были способны сами прочитать книжку, настроить себе окружение и написать калькулятор. Но из-за того что привыкли что их водят за ручку на этих самых курсах они окончательно потеряли способность самостоятельно находить информацию
image.png86 Кб, 717x831
38 2168591
>>168587

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



Они сами хотят, что бы их за ручку вели
39 2168604
>>168591
Я пришел вкатываться с нуля - катите меня!
40 2168607
>>168587

>про то, что вкатуны с говнокурсов


Какие ещё вкатуны? Полно свежих профильных студентов, вкатывающихся на хайповое goвно
41 2168610
>>168607

>Профильный студент


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

Я когда только выпустился мне на первой работе так жепь разорвало от того, что после вуза пришлось люто доучиваться на самой работе
42 2168613
>>168610

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


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



И нахуй тогда вообще нужны джуны/вкатуны
43 2168615
Лисп решает
44 2168616
>>168613
Так они и нужны в очень небольшом количестве, что бы расширять постепенно штат сотрудников что очень часто не работает потому что они сваливают как начинают ощущать себя мидлами
45 2168628
>>168616
И нахуй тогда пиздеть, что вкатунов меньше чем вакансий джунов
В го не берут джунов 46 2168633
В го не берут джунов

Сабж.
47 2168651
>>168633
Трус не играет в хоккей!
48 2168672
>>168633
джнуов не берут никуда, даже в дворники, даже в охранники
49 2168745
>>168633
Нахуй вообще программирование нужно?
50 2168886
>>168633
Так сложно полгода гриндить литкод и закатиться в топ маркетплейс? Ах да, у пориджей же алгосы не нужны
51 2168925
>>168591

> Вкати меня, мразь!

52 2168929
>>168886

> гриндить литкод


>>168610

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

53 2169703
>>168607
Ты охуееш когда узнаешь на сколько там всё плохо, если это не топ-5 вузов страны. А если топ-5, то их еще за 2 года до выпуска забирают к себе крупные конторы и обучают под свои нужды
54 2171042
Почему меня тошнит от го?
55 2171071
>>171042
Так не юзай.
56 2171118
>>171071
Так я не юзаю.
57 2171154
>>171118
Понятно.
58 2171185
>>171042

>Почему куда бы я не пришел - вас воняет дерьмом?

59 2171427
Количество малвари, написанной на Go, увеличилось на 2000% за несколько лет
эффект низкой БАЗЫ

https://xakep.ru/2021/02/26/go-malware/
60 2171674
>>171427
А что не так? Любая программа на говне уже по умолчанию вредоносная.
61 2171742
>>171185
Так только у вас воняет.
62 2172148
>>171427
Ну, ботнеты на го писать наверное одно удовольствие.
63 2172149
>>169703

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


Это значит, что кабанчики совсем зажрались

>А если топ-5


Куда вам топ-5, вы и сами не фуфанг
64 2172713
>>172148
А на чем их до этого писали? На плюсах?
65 2172737
>>172713
На чем угодно. В малвари хайтек только в всяких руткитах, а клиентский софт на любой хуйне пишется, c&c тоже может макака на пхп написать.
66 2172748
>>172713
>>172737

>На чем угодно.


Не на чём угодно, в идеале, нужно скомпилировать бинарь, если знаешь точную конфигурацию машины жертвы. А там уже остаётся только через бэкдор скачать бинарь на машину и запустить. Скачивать интерпретаторы или ВМ не вариант, так как это легко можно спалить антивирусом.
67 2172750
>>172748
99% массовой малвари под шинду, к линупсам в любом случае нужен индивдуальный подход, там работают точечно.
На что и намекае статья с списками APT, эти не сшибают мелочь с миллионов, а работают по крупняку.
68 2172774
>>172750
Так я про архитектуру проца и версию ос имел ввиду.
69 2172831
>>172774
>>172750

А в чем проблема собрать n бинарей и выкачивать нужный в зависимости от ОС/проца?
70 2174207
https://github.com/golang/go/issues/45346
Видели уже? Что думаете? Как по мне - хуита, можно было безболезненно сделать поведение с тильдой по умолчанию и не засорять код ненужными символами
71 2175036
1
72 2175037
1
043d3232d5ba4217a6e88934b773873d.gif427 Кб, 760x434
73 2177248
Анон, есть ли какие-то удачные паттерны для работы с каналами?

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

Но что если нужно например ограничить количество параллельных горутин?
Я вижу два варианта:
- Делать какую-то конструкцию с каналами (видимо буферизованными или с семафором). Получится громоздко.
- Использовать ту же ерргруппу, но добавить семафор не понимаю, почему его не сделали опциональным параметром ерргруппы. Не так громоздко, но все равно лишний код.

Мне кажется должны быть уже известные рецепты/инструменты для таких типичных кейсов.
74 2177586
>>177248
Ну можно через пулл воркеров ебануть. Запускаешь сколько надо воркеров, например 4, на каждое ядро, и через канал отдаешь им таски, через другой канал смотришь ошибки (можно обернуть в тот же Wait). Но это довольно громоздко.
Screenshot from 2021-10-08 17-58-51.png24 Кб, 507x226
75 2177673
>>177586
Да, это все очень громоздко.

Вообще я немного ступил в своем вопросе, ограничить горутины семафором легко (пикрелейтед) - это достаточно лакончино получается.

Я хотел сказать другое.
Есть пул задач, которые мы хотим разбирать в N воркеров.
И есть их результаты работы, которые мы хотим разбирать в M воркеров.
(Ну например: ходим во внешний сервис 10-ю воркерами, пишем в базу 2-мя. Условно.)

Суть очень простая. Но на чистых каналах это будет ебаная простыня.
Мне хочется какой-то конструкт, чтобы что-то типа:
err := pipe.
-- Funout(10, func() {}).
-- Funnel(5, func() {}).
-- Wait()
76 2178830
Что такое дженерики и зачем они нужны? Можно пример в псевдокоде?
77 2178862
>>166446
Так падажи ебанарот, ты как на дваче моноспейсом пишешь? Или у меня
78 2178867
>>178862
С дашчана капчуешь? Попробуй теперь в браузере открыть, увидишь тег [сodе][/сodе].
79 2178870
>>178867
Ды, с дашчана.

Ну-ка
[code]
six = 2 3
twelve = six
2
[/code]
80 2178871
>>178870
Не, всё равно звёздочки съедаются.

блядская макака
81 2178874
>>178871
Если бы хач полностью выключил разметку в /pr/, это бы принесло больше пользы, чем вреда. То индекс по i проебётся, то указатели, а используют подчёркивания-курсив в тексте в основном одни шизики.
82 2179907
>>177673

>Мне хочется какой-то конструкт, чтобы что-то типа:


>err := pipe.


>-- Funout(10, func() {}).


>-- Funnel(5, func() {}).


>-- Wait()


Ну без дженериков такое использовать очень неудобно, но можешь обмазаться https://github.com/ReactiveX/RxGo
83 2179930
Попросили написать сервис для генерации jwt access и refresh токенов, проверки и выдачи новой пары.
Я в го совсем недавно, хочу устроиться кодером на бэк, хоть куда-нибудь, всё зделал за пару дней. Вместо gin лучше самому движок написать? Они попросили не использовать ничего кроме го и монгодб.
Просто хз как надо.

А ещё вопрос. В "hash" есть интерфейс hash.Hash. Функция из "crypto/hmac" hmac.New(...) возвращает тип hash.Hash структура вроде как или хз. Хотел написать что-то вроде этого:

func (h hash.Hash) addSomeShit(data []byte) hash.Hash {}

Но он не даёт это сделать, только так

type Hash struct {
Hash hash.Hash
}

func (h Hash) addSomeShit(data []byte) Hash {}

С обращением через h.Hash. По другому не работает. Пробовал type Hash hash.Hash, type Hash struct {hash.Hash}, Но в тех и других случаях получается не то что хотелось бы.
Интерфейс можно указывать как выход, но для него нельзя добавить новый метод получается?
Screenshot2021-10-11-15-58-26-332com.github.android.jpg438 Кб, 1080x2340
84 2180218
>>179930
Вот ещё, в самой либе hmac. Он возвращает hash.Hash, но делает return Hmac. Можно просто на вывод указать интерфейс, а там любой тип, лишь бы реализовывал его? В чём плюсы так делать? Чтоб рефакторинг не проводить потом?
85 2180224
>>179930

>Вместо gin лучше самому движок написать?


На самом деле стандартный net/http не так и плох, для твоей задачи более чем хватит

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


Да, ты можешь заембедить в свою структуру либо другую структуру, либо интерфейс, но добавлять метод к типу из другого пакета ты не можешь.
>>180218
Вообще рекомендуют в общем случае принимать в аргументы интерфейсы, а возвращать конкретные типы, а кому надо - они уже дальше в интересы явно или неявно преобразуют.
86 2181252
Rob Pike aka BATYA предлагает не торопить события:

> I propose that we do not update the libraries in 1.18.



https://github.com/golang/go/issues/48918
87 2182081
Ящитаю что классы избыточны
88 2182939
>>182081
Ну да, на много лучше как в старых добрых сях - вместо методов создавать функции для работы со структурой.
89 2182943
>>182939
В жабе тоже так делают со стейтлесс-сервисами и сущностями без логики.
90 2183600
аноны, какой стек технологий посоветуете учить с голангом?
91 2183644
>>183600
Постгрес, докер и остальное.
92 2184381
>>183600
Если разраб: https://github.com/Alikhll/golang-developer-roadmap/blob/master/golang-developer-roadmap.png

Если девопс - тебе в общем-то кубернетиса более чем хватит чтобы охуеть от количества материала, а когда будешь в кубере понимать - там уже по вакансиям смотри что на рынке требуют.
16333431071160.png404 Кб, 1300x1300
93 2185766
Сап гоферы, кто-нибудь может пояснить тупому бекендеру пишущему на интерпретируемых динамикодриснявых и т.д. языках как понять ебучие указатели и как научиться понимать где использовать указатели и где не использовать? Я пришел в го после трёх лет работы, уже полгода пишу на нем и до сих пор не понимаю сраные указатели. Повезло попасть в проект, где в основном уже всё готово и я просто добавляю роуты по аналогии с уже имеющимися и таким же образом дёргаю базу. Сам с нуля я хуй бы всё это написал т.к. имею слишком низкий IQ для понимания указателей, но может всё-таки кто-то здесь сможет мне помочь?
94 2185834
>>185766

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


Ты жалок и слабодушен. Ради ответа на вопрос поносишь себя говном и свои альма-матер.
Мать тоже продашь за сгуху при соответствующих обстоятельствах?

>как понять ебучие указатели


Что там понимать? Указатель это ссылка на область памяти.
Передаешь в функцию указатель - прыгаешь к данным по ссылке и работаешь с ними.
Передаешь в функцию не указатель (значит само значение) - получаешь копию области памяти и работаешь с копией.
Отсюда два сайдэффекта:
- Указатель занимает 64 бита незвисимо от того на что указывает.
- Работа с указателем повлияет непосредственно на оригинальные данные, а не на копию.

Дриснявое говно это го.
95 2185893
>>185766
Ну, если ты из интерпретируемых динамикодриснявых языков, то просто используй поинтеры к любой структуре, которую ты сам определил, семантика будет такая же как ты и привык в своём ${языкНейм}
96 2185894
>>185893
Единственное исключение - старайся не передавать поинтеры в каналы, либо если передавать - то больше не использовать его в той горутине откуда ты его отправил.
97 2186308
>>185834
Не ради ответа на вопрос, а просто констатирую факты, которые обнаружил через работу с этими языками, потому и решил переходить на го или дотнет или джаву, вот го первым подвернулся. И не себя поливаю, а инструменты, на которых работал. Альма-матер? Ты слишком серьезно относишься к лопатам и киркам.

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

Если ты считаешь го дрисней, то какие языки не считаешь?

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

>>185894
Во втором случае больше не использовать в горутине даже если из канала он просто читается и ничего больше с ним не делается? Данные по ссылке ведь те же самые должны остаться
98 2186349
>>186308

>не понятно когда их использовать, а когда нет


Используй указатели для больших структур или если объект должен быть мутабелен. В остальных случаях передавай копированием, всё. Про согласованность методов структуры читай ниже.
https://golang.org/doc/faq#methods_on_values_or_pointers
photo2021-09-3013-00-35.jpg9 Кб, 498x593
99 2187148
100 2187225
>>187148
Literally me
101 2187285
>>186308

>если можно каждый раз не использовать их и просто передавать копию? Байты экономить?


Представь себе, да. Когда про говноязыки говорят, что они текут, имеют в виду именно рост потребления памяти по времени работы процесса. Если хочешь в документации к своему говну написать "нужен перезапуск процесса по крону раз в час", то да, можно не использовать указатели и просто передавать копию.
102 2187357
>>187285
Есть какие-то данные о том, насколько сильно это экономит память? Это точно не экономия на списках?
103 2187496
>>187357
Если ты программист, то можешь написать два куска кода и погонять их в бенчмарках. Если нет, то хули тебе надо бля?
104 2187972
>>187496
Нужны пруфы утверждению о том, что указатели значительно уменьшают потребление памяти. Утечки памяти ещё приплел не к месту зачем-то.
105 2188015
>>187285
Утечки памяти по-другому работают, пчел. И как раз в говноязычках всё на указателях работает
106 2188023
>>187972
У тебя есть массив, который весит 1мб

Каждый раз передавая массив в функцию, тебе придется выделять память под новый массив, а gc убирает старый. Программа потребляет в разы больше памяти и сколько-то процессорного времени.
107 2188076
>>188023

>Программа потребляет в разы больше памяти и сколько-то процессорного времени.


Ты уверен, что потребляет в разы больше памяти? Тем более gc это быстро чистит, и процессорного времени он занимает не много, он го охуеть какой эффективный, особенно по latency.
108 2188133
>>188076
Зависит от размера структуры и нагрузки. GC умный, но магии здесь нет.
В хайлоаде начинают каждую аллокацию считать
109 2188172
Важно также понимать, что часть переменных алоцируется на стеке и не нагружают GC. Что именно будет алоцировано на стеке а что в хипе - решает escape analysis на стадии компиляции.
В любом случае, вы сейчас занимаетесь теориекрафтите преждевременные оптимизацию не столкнувшись с реальной проблемой в производительности, а такие вещи лучше решать по месту.
110 2188317
>>188023
что либо предполагать тут бессмысленно, надо запускать escape analysis.

Есть несколько нюансов по котороым память выделится в хипе:
1) При неопределенной длине слайса/мапы
2) При возврате указателя с функции/метода (ИМЕННО return)
3) При создании глобальной переменной в пакете
4) closure (лямбды)

1) Массивы(не слайсы) с определенной длиной передаются by value(слайсы по идее тоже, но там только хэдер, а данные по указателю)
2) При передаче указателя в аргумент функции, данные не будут выделяться в хипе
3) Гошный stack очень сильно отличается от стэка других ЯП, если кратко сказать то он эластичен и может изменяться, но задетектить это кажется нереально (надо глянуть сурсы). Поэтому большие массивы у которых длина константна могут уложиться в стэк (если данные массива занимают больше 65536 байт то он уйдет в хип, при меньшей в стэк)
111 2188330
>>188317
фикс: у слайсов если длина константна*
112 2191590
кто-нить устраивался в WILDBERRIES на стажёра? ебут на собесах?
113 2191874
114 2191887
Какие вообще есть реальные альтернативы го в коммерческой разработке/карьере? Джава и дотнет? Почему вы выбрали не их, в именно го?
115 2191888
>>191887
Это ещё вопрос, является ли сам го альтернативой жабе и дотнету.
116 2191899
>>191887
Сейчас все пишут на тайпскрипе на ноде и деплуят это все в кубернетисы на облако
117 2191901
>>191899
Самые злоебучие и громкие - это не все.
118 2191904
>>191901
Ну а хули, го только и обслуживает кубернетисы и больше нигде не нужен, вон в helm там шаблоны на готемплейтах
119 2191905
>>165418 (OP)
Пацаны ну есть же нормальные языки типа джавыскрипта или питона, нахуй это говно нужно?
120 2191906
>>191905

> нормальные языки


> джавыскрипта или питона


Выбери одно.
121 2192607
>>191887
От го меньше тошнит, проще вкатиться на сеньора, меньше вероятность что придется ковырять кровавое легаси
122 2192635
>>191906

> > джавыскрипта или питона


> Выбери одно.


Выбираю жавускрипт
123 2192654
>>191590
стажёра-упаковщика шмоток?
124 2192837
>>191887
ООП языки дискредитировали себя, так что выбор у тебя между нодой и го, если хочешь работать в топовой компании.
125 2192963
>>192837

>ООП языки дискредитировали себя


Каким это образом?
126 2193000
>>192654
очень смешно
127 2193538
Как на вашем го дела с десктоп гуйней?
128 2193568
>>193538
Никак.
129 2193624
>>193538
Есть обертки над сишными либами разной степени паршивости, есть https://github.com/fyne-io/fyne для простых приложений без требований к дизайну.
А вообще вот список, я не знаю что ты хочешь сделать и какие требования к либе https://awesome-go.com/#gui + https://awesome-go.com/#game-development
130 2193875
>>193538

>2k22


>десктоп

131 2194469
>>193875
В мрачной антиутопии 2k22 года всё только в вебе или через электрон в вебе?
132 2194473
>>194469
ОС будет либо консолью для админов, где можно ставить только серверный софт, либо браузером, где свои приложения ставить запрещено, постоянный доступ в интернет обязателен.
133 2194497
>>191590
да, нет, если опыт прям ноль то рекомендую, если опыт был хотябы 2+ года на любом языке в вебе то сразу бздуй на мидла, не шучу
134 2194500
>>194473
Такой-то дивный новый мир.
135 2194683
>>194473

>консолью для админов, где можно ставить только серверный софт


Такой-то манямир неосилятора линукс. Для текстовых консолей есть и музыка, и игры, и отображатели картинок даже. ASCII-видео разумеется не завезли, но оно и не нужно.
136 2194686
>>194683
Но зачем
137 2194702
>>194683

>не завезли


>и не нужно.


Типичный "осилятор" линуксовой копрофилии
138 2194722
>>194702
Эх, сейчас бы быть разРАБотчиком и не мочь в линупс.
psina.webm1,2 Мб, webm,
960x600, 0:08
139 2195421
>>194683

> ASCII-видео разумеется не завезли

140 2195606
>>195421
Охуеть, а я запускал иксы, чтобы подрочить. Спасибо, анон!
141 2196586
Какой-то сложный язык. Хожу на курсы от одной ит-конторки, и перестал понимать что-либо в нем. Синтаксис какой-то захламленный, а контекст вообще не понятно зачем нужен.
142 2196588
>>196586
Если пщ для тебя сложный, то что тогда простое? Только не говори, что жс/питон, они намного сложнее.
143 2196591
144 2196598
>>196591
Ладно, принято. Ну хз, главное изучать дальше и не сдаваться, понимание появится.
145 2196612
>>196591
php 3?
146 2196617
>>196612
php 5.4 минимум
147 2196656
Бэк на Го в целом чем отличается от "крудов" на Node.js? У меня есть небольшой опыт разработки бэка на Python и Node.js, но сам я фронтендер который пилит фронт уже 3 года. Знакомые советуют перекатываться в бэк на Го возможно, в будущем я так и поступлю, но чет ссыкую понизить грейд до джуна. Поетому мне интересно почитать про архитектуру типовых проектов на Го, что в целом спрашивают на собесе у мидлов.
148 2196667
>>196656
В го нет джунов, можешь не переживать.
149 2196704
>>196656
Микросервисная залупа обернутая в кубернетис, вот тебе и вся архитектура.
150 2196753
а вам норм в коде оставлять ссылку на модуль на гитхабе? а если с ним что-то будет?
151 2196763
>>196753
Не норм. Но скажи спасибо гуглу, что выбора тупым программистмшкам он не дал.
152 2196780
>>196753
Пакеты с npmjs.com не могут исчезнуть?
Пакеты с pypi.org не могут исчезнуть?
в го модулях тоже можно переопределить откуда пакет тянуть (replace) https://golang.org/doc/modules/gomod-ref
153 2196784
>>196753
Оставляй ссылки на модуль в гитлабе, очевидно же.
154 2196839
>>196784
Ну и про вендоринг не забывайте
155 2197669
Ребята, как в Go достать жсон из гет запроса? У меня есть API мне нужно с него получить данные в виде ЖСОН чтобы дальше с ними работать, но у меня получается вывести только в байтовом виде(какая-то хрень выводится) или в виде строки(в виде строки нормальные массивы)
156 2197691
>>197669
json.Unmarshal
157 2197697
>>197691
Пробовал. cannot unmarshal array into Go value
158 2197699
>>197697
Чел ты... го тур проходил?
var v []interface{}
json.Unmarshal(body, &v)
159 2197701
>>197699
Конечно. Уже вторую неделю изучаю его после работки.

Приходит <nil>

func MakeRequest() {
//var query string
var v []interface{}

resp, err := http.Get("тут урл")
if err != nil {
log.Fatalln(err)
}

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalln(err)
}
//query = string(body)

test := json.Unmarshal(body, &v)

log.Println(test)
}
160 2197702
>>197701
Щит, с разметкой накосячил... Простите.
161 2197710
>>197701
В данном случае лучше использовать json.NewDecoder(resp.Body).Decode(&v)

https://play.golang.org/p/Gv7UN3vS_fA
162 2197907
>>197710
для двоча подошло, конечно, но для моей задачки нет. массивы данных у меня в текстовом виде представлены и только когда я выбираю в консоли браузера вкладку с get параметром, то в ответе вижу json. Пытался в самом браузере в поисковой строке дописать .json в конце строки, так он мне просто null вернул(браузер, не Go)
163 2197952
>>197701

>test := json.Unmarshal(body, &v)


>log.Println(test)


>Приходит <nil>



Ты же в курсе, что ты логируешь ошибку? Этот метод "анмаршалит" данные в структуру V и возвращает ошибку. Нормальный код выше уже написали, он должен работать. Проверь правильность работы АПИ, или чего нибудь ещё, ошибка может быть очень глупой.
164 2198290
>>197952
О, блен, анон, реально чето затупил. Сейчас все получилось. Огромное спасибо!

Просто убрал присвоение и стал выводить v. Ошибка реально глупая.
165 2198477
>>198290
Глупой ошибкой было писать на GOвне вместо языка.
166 2198869
>>198477
Анон, расскажи о себе. Что такого произошло в твоей жизни, что ты решил тратить своё свободное время на засерание го треда? Где ты свернул не туда?
167 2199136
>>198869

>ГОвно


>засерание


Норм шутканул.
168 2199157
>>199136
Нет, я серьезно. Мне правда интересно как ты пришел к такой жизни
169 2199465
>>199157
Да я просто в детстве упал на швабру, 5 раз подряд
170 2199467
А ещё я сосу хуи
171 2199534
Как в ГО происходят прерывания для переключения задачи? В питоне все понятно, поставил await и это сигнал менеджера, а тут чет не нашел ничего подобного.
172 2199675
>>199534
Братан тебе ещё рано, пройди пока го-тур.
173 2199677
>>199534
А в пщ это делается автоматически, никакого async-await-мусора не нужно.
174 2199678
>>199534
Тут почти как в OS - планировщик всю эту херню крутит-вертит и мапит m горутин на n тредов, а когда они доходят до всяких time.Sleep, сисколов, мьютексов и каналов - передает управление другой горутине. Но ты можешь руками вызвать runtime.Gosched(), если тебе очень надо.
175 2199703
>>199675
Лул, я на позицию го-дева прошел в банк только закончив тур и написал говноборду. На собесе только про прошлый опыт с питоном спрашивали и пару задач с которыми даже даун справился бы. и отвалился на СБ так как не хотел ИП закрывать, который я для апворка использую
изображение.png270 Кб, 414x340
176 2199712
177 2200023
>>199534
Для синхронизации нужны каналы, waitgroup. Читай доку, читай го бложик
178 2200303
>>165418 (OP)
Товарищи Аноны, имеет ли смысл брать GO первым языком программирования? Если нет посоветуйте какой-нибудь другой(Сижу под линей, С# не предлагать)
179 2200401
>>200303
Изучаю голанг как второй ЯП уже после двух лет работы на пхп. Мне очень трудно дается.
sdf.png31 Кб, 787x734
180 2200405
Аноны, как в Go отправить по-нормальному POST запрос? Пытаюсь отправить JSON в него и получить нормальный ответ, но получаю 400 Bad Request.
181 2200445
>>200303
Не имеет, го для миддлов, перекатывающихся из других языков.
Язык выбирай по области, которой хочешь заниматься, хоть жаба, хоть жс, хоть кресты.
182 2200515
>>200401
А чего не дается-то? Основная разница в sync пакете валяется и в каналах, ну и в байтоебле с профилированием и высчитыванием шо стек шо хип как любят плюсовички, а просто говнокодить контроллеры и репозитории все одинаково
183 2200526
>>200515
Контекст, горутины, каналы, кривой синтаксис, постоянные err != nil, ругань о том, что что-то объявлено и не используется, громоздкие отправки GET и POST запросов, странные интерфейсы. В общем у меня ошибка на ошибке. Решу одну, всплывает другая. Ну и конечно же подкрепляется это тем, что из-за необычности синтаксиса понимание написанного дается в несколько раз сложнее.
184 2200527
>>200526
Странный ты, у меня после пистона натура заходит.
185 2200587
>>200405

> но получаю 400 Bad Request


А что в логах сервера-то? Код клиента вроде вполне корректный
186 2200722
>>200405
Чел, ты ... Джсон на валидность проверял? У тебя лишняя запятая в конце
187 2201063
>>200722
Да, поменял сейчас, но ошибка та же)
188 2201348
>>201063
Тогда хз, у меня твой код работает, внимательно изучи API сервера, мб проебался с типами.
189 2203326
Знающие аноны! У меня есть вопрос по циклу с горутинами, может подскажет кто-нибудь умелец?
Вот есть цикл который с 10 итерациями.
Каждый раз в цикле запускаются анонимные горутины, которые записывают в канал(int) число возвращаемое из функции(которая выполняет какие-то действия и возвращает int)
Далее после всего цикла перед return я читаю все 10 значений из канала, НО получаю половину значение с числом 1. Вопрос, как получить все 10 значений из функций в горутинах?
190 2203472
>>203326
анонимку покаж
4BYDjNQdohI.jpg82 Кб, 581x644
191 2203482
192 2203492
>>203482
arrayNumbers передай аргументом в анонимку
193 2203495
>>203492
Ахах, а ловко ты это придумал. Я даже сначала и не понял почему так было)
Спасибо)
194 2203524
>>200303

>имеет смысл GO


да

>под линей


это типа линукс? я так понимаю ты собрался сервера писать, есть же .netcore нормально пишут на нем сервера.

> Если нет посоветуйте какой-нибудь другой


похуй какой, везде придется учить клиент-серверная архитектура, основы сетевой работы, rest, docker, kuber, БД, bash, и прочие команды терминала. Именно язык тут 10-30%. Думаю лучше начать с python у него тонны документации на ру. Если ты читаешь на инглише и смотришь видосики то можно и ГО.
На работу можешь подаваться когда осилишь условно 10 серверов, зальешь на гит с нормальными коментами.
195 2203534
>>200526

>что что-то объявлено и не используется


Так вот кто этот говнокод на пыхе пишет, ты может быть ещё и битриксоид?
196 2203549
>>187148
Пиздец я обоссался с пикчи
197 2203647
>>203534
Ну да, я пишу. Только не битриксоид а PHP Native.
198 2204242
Помню смотрел когда кщк 1.13 было и угарал с этого go111mod и ручного складывания в go.mod. Как там сейчас? Все так же зависимость ставится глобально, да еще и что-то там настраивать в путях надо?
199 2204245
>>204242

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


Если ты намекаешь на node_modules, подобного говна нет и никогда не будет ни в одном нормальном языке. Несколько версий одного пакета можно держать менее костыльными способами.
200 2204248
>>204245
Ну так расскажи, как правильно надо организовать это.
201 2204250
>>204248
Всё в доке написано и уже давно работает, ничего самостоятельно делать не нужно.
202 2204253
>>204250
Конечно написано, только это документация для питона
go get -u github.com/gorrila/mux
rm -f $(go env GOPATH)/pkg/mod/gorrila
Пиздец комманда для удаления.
30332963600.jpg61 Кб, 600x406
203 2204817
>>165418 (OP)
Привет задроты. Я тут мимо-фулстак-жс-макака, решил расширить кругозор и углубился в этот ваш го. Осилил интро до момента "у нас нет классов, а метод это функция с указанием типа-ресивера"

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

Как тут у вас с ооп? Наследования нет, как я понял, как же вы тут живёте? Утиная типизация?

Почему нет Классов? Нет классов значит нет конструкторов значит нет реализации базового функционала? Или вы там фабриками на каждый чих обмазываетесь?

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

Вопрос последний, который должен быть первым. А нахуя вообще нужен этот голанг? В мире дотнета, ноды и прочего такого?
204 2204823
>>204817

> Как тут у вас с ооп? Наследования нет, как я понял, как же вы тут живёте?


Вместо наследования есть interface embedding/struct embedding. Полиморфизма нет.

> Почему нет Классов?


Дядюшка Пайк считает, что они не нужны.

> Нет классов значит нет конструкторов значит нет реализации базового функционала? Или вы там фабриками на каждый чих обмазываетесь?


А что плохого в фабричных функциях? Те же конструкторы, но с названием.

> Нахуя указатели?


А нахуя ссылки в JS?

> А нахуя вообще нужен этот голанг? В мире дотнета, ноды и прочего такого?


А нахуя дотнет, нода и прочее такое, если есть голанг?
205 2204842
>>204817
У го киллерфича это то что нет async/await и тредового говна, и не надо синк/асинк версии функций писать, своя модель конкаренси
206 2204858
>>204823
Ну для начала сразу скажу что я не даю оценок. Я прикидываю закатываться или нет. А для этого мне надо понять как делаются типовые задачи. >>204823

>Вместо наследования есть interface embedding/struct embedding


Можно вкрации на пальцах? Сам я все свои 22 года программирования пишу в ООП парадигме, и очень редко функционально..

>А нахуя ссылки в JS?


Ну быстрое сравнение? Безопасность опять жи

>А нахуя дотнет, нода


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

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

Окей, я понял что их нет. А в чем киллер фича? Как там прогают асинхронно тогда?
207 2204869
Блять, почаны, хотел в ваш го вкатиться ждуном, но почитав тред передумал. Выглядит синтаксис вырвиглазно, хуже чем PHP, ей богу, это ваще жесть какая-то. Постоянно ошибки, длинные запросы, нет ООП, ссылки называются указателями. Все перевернуто и переебано. За сим отдаю вам вакансию ждуна за 25к - https://hh.ru/vacancy/42302087

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

>>196656
А зачем бросать фронт? Чем тебе не нравится? Полно работы и денег, много интересных проектов, что не нравится-то я не пойму?
208 2204883
>>204858

>Можно вкрации на пальцах?



Ну например:

type Stringer interface{ String() }

func Print(s Stringer) - функция которая принимает только объекты которые реализуют метод String(). Правильно реализовать метод String в своем объекте - твоя задача.
209 2204886
>>204883
Так если класса нет, и наследования нет, как гарантировать что макакен реализует String() правильно?
210 2204892
>>204886

>как гарантировать что макакен реализует String() правильно?


Не ебёт. Например ты реализовал интерфейс для БД (обычный круд), и с помощью него написал view и controller, пускай теперь другая макака на основе этого интерфейса запилит бд и чтобы она норм работала.
211 2204893
>>204883
В прочем похуй, я тут копнул ещё.
Дженериков нет, трайкетча нет, дефолтных параметров нет, перегрузки методов нет.

Залупа/10, а не язык.
Пойду дальше на тайпскрипте кодить.
212 2204896
>>204893

>Дженериков нет


НЕНУЖОН, но в 1.19 методичку поменяют. обмажемся по полной.

>трайкетча нет


НЕНУЖОН

>дефолтных параметров нет


НЕНУЖОН

>перегрузки методов нет


НЕНУЖОН

>Залупа/10, а не язык.


Ну где то так, мне норм.
213 2204931
>>204896

>трайкетча нет


>НЕНУЖОН


Если с остальными еще с горем пополам могу согласить, но вот тут ты обосрался, мартышка.
214 2204976
>>204931

>трайкетча нет


Это и ошибка по значению очень сильно влияет на процесс написания кода и архитектуры. Я после года на гоше, кроме как на расте больше не могу ни на чём писать без постоянного затупа.
215 2205094
>>204976
Пчел, мне прям не хочется быть грубым. Но судя по спецификации это реально язык для тупых код макак которым нельзя вообще ничего.

Ну типа автор языка вместо
DoShit(a, b?, c?, d?) реально считает что копипаста
DoShitWithA
DoShitWithAandB
....
SoShitWithD
это что-то хорошее.
photo2021-11-0712-38-48.jpg24 Кб, 1206x402
216 2205191
О сложности вката в го
217 2205204
>>205094
В го комьюнити есть общепринятый способ как работать с опциональными параметрами.
https://petomalina.medium.com/dealing-with-optional-parameters-in-go-9780f9bfbd1d
218 2205205
>>165418 (OP)
надо ли знать ЖС для вката в Го?
Это же по сути бэкенд язык, значит надо понимать хоть чуть-чуть что там просходит настороне фронта? Или похуй?
219 2205207
>>165430

>программистам скорее всего такой расклад не очень понравится — мало кто любит быть винтиком в системе.



Лел, можно подумать что программисты это и так не легкозаменяемые винтики в системе, отличающиеся от заводчан только условиями работы и зарплатами.
220 2205257
>>205094
Блять, честно тебе скажу, мб я макака, но за все время пока писал на го, единственным юзкейсом использования дефолтных параметров, были алгоритмы с рекурсией. А для чего они ещё нужны?

Если прям вообще пичёт, то альтернатив много:
1. Кастомный конфиг (Если объект очень большой, сервер или репа)
2. Обычный map (Самый простой, но самый уебанский способ)
3. Как уже написали, опционные функции (Хорошее решение для использования в функциях инициализаторах).

Это кстати, те знаменитые велосипеды на Го
221 2205315
>>205257

> А для чего они ещё нужны?


Для функций/методов, которые делают всё на свете и сразу. Вот в го есть fmt.Printf, который печатает в stdout, и есть fmt.Fprintf, который печатает в указанный райтер, а в том же питоне, например, https://docs.python.org/3/library/functions.html#print принимает 4 аргумента с дефолтным значением, один из них это файл-лайк объект, по дефолту sys.stdout. Вообще для питона это нормально, некоторые функции там принимают по 3 строки аргументов, и если бы не дефолты - люди бы охуевали это всё передавать.
222 2205319
>>205315
А как в го конструируют большие объекты? Педалят по 20 функций на все?
223 2205338
>>205319
Уже написал >>205257
224 2205345
>>205319
В го стараются не делать большие объекты, зачастую всё подобное говно делают многослойным.
Ну и еще есть принцип make zero value useful, но вне стандартной либы его практически никто не придерживается
225 2205346
>>205315
Тут есть чёткая грань между твоим примером об fmt и "принимают по 3 строки аргументов". Большие объекты можно через конфиг создавать, NewRepo(&cfg{...}) и это будет удобно, а функции которые делают все подряд - говнокод.
226 2205661
Яндекс практикум выкатывает свой курс https://practicum.yandex.ru/promo/go-profession/
227 2205724
>>204817

> Как тут у вас с ооп


Нахуй ООП

> Наследования нет


Не нужно

> Утиная типизация


Для интерфейсов

> нет Классов


Нахуй классы

> нет конструкторов


Используют функции, возвращающие структуру

> Нахуя указатели


Всё более явно. В принципе, их могло и не быть
228 2207290
>>205257

>. А для чего они ещё нужны?


CreateUser(firstName, secondName, lastName, prefix, postfix, gender, birthDate)
229 2207426
>>207290
CreateUser(models.User{firstName:"GO",secondName:"VNO"})

Возвращать может созданого юзера, можно ещё делать валидацию внутри функции, чтобы присвоить свои default поля, но придется городить if'ы не самый хуйовый кастыль который я видел в го, так что бздеть по этому поводу не стоит.
230 2207611
>>207426
Ладно дженерики, там пайк кое как объяснился, а чем ему необязательные и дефолтные параметры не угодили?
231 2207625
>>207611
"They are a bad idea as they make it much easier to build confusing functions that complicate the API."
Хуйню написал если честно, что мешает создавать запутанные API через указатели на структуры вместо дефолтных параметров?
232 2209433
>>165418 (OP)
Перекатываюсь в го из пистона и понемногу ахуеваю.
Как вы живете с такими уебищными обработками ошибок, посоны? Это же пизда.
А еще я не понимаю где и зачем использовать указатели, потому что я тупой.
А еще я не понимаю почему чтобы сделать мапу, нужно обязательно оборачивать ее в make.
Пиздец какой то
233 2209652
>>209433

>А еще я не понимаю почему чтобы сделать мапу, нужно обязательно оборачивать ее в make.



>Map: An empty map is allocated with enough space to hold the specified number of elements. The size may be omitted, in which case a small starting size is allocated.



>m := map[int]int{}



Братан, точно не мне давать тебе советы, но просто в доки смотри.
234 2209731
>>209433

> А еще я не понимаю почему чтобы сделать мапу, нужно обязательно оборачивать ее в make.


Не обязательно, ты можешь создать мапу из значений https://play.golang.org/p/CAH_912zpdJ
235 2209868
>>209433
Указатель для передачи в функцию большого числа данных.

Вот есть у тебя, например, очень жирная структура. Можешь передать её в функцию без указателя. Тогда функция будет работать с её копией, а копировать большую структуру долго, поэтому лучше передать её адрес в памяти (чем указатель и является), что будет куда быстрее.

Отсюда же вытекает, что если передаёшь что-то по указателю, то функция это что-то может изменить в ходе своей работы (напоминаю, что в противном случае она изменит копию, а не сам предмет).
236 2210264
>>209868
Спасибо, более менее понятно.
В ступор ввел трехстрочный http сервер, где функция принимает ссылку на request и я вообще запутался
237 2210823
>>210264
Просто всегда используй поинтеры к структурам, зачастую это оправданно.
238 2211520
>>210823
Бля, это ваше странное ООП еще с толку сбивает. По ощущениям поинтеры максимально похожи на self/this в пистоне
239 2211701
>>211520
receiver, ты хотел сказать? Да, это буквально тоже самое, что и self/this.
240 2211748
>>210823
Почему кстати не рекомендуют смешивать в рамках одной структуры передачу по ссылке и значению? От ситуации же должно зависеть
мимо
241 2211771
>>211748
Думаю это связано с тем, что T и *T вангую макаба съест астериск, там поинтер на Т это разные типы и вполне могут имплементить разные интерфесы, вернее поинтер может имплеменить интерфейс, который значение по поинтеру не имплементит. Соответственно и в ряде случаев просто не имеет смысла использовать значение типов, которые должны быть использованы только через поинтеры. Яркий пример это структуры которые содержат мьютекс или вейтгруппу - их нельзя копировать, т.к. нельзя копировать нижележащие атомики, по тому что это просто не имеет смысла.
Возможно еще по тому, что если ресивер передается в часть методов как поинтер, то он скорее всего и так утечет в хип, а копирование поинтера на каждый вызов всё равно дешевле чем копирование какого-то другого, более сложного, типа.
Возможно просто хотели снизить когнитивную нагрузку, т.к. вложенность методов может быть довольно большая, и в ряде случаев сложно с первого взгляда определить, меняет ли метод внутреннее состояние или нет. А если меняет и где-то в цепочке вызовов был ресивер по значению - всё сломается, т.к. работа будет уже с копией.
242 2211957
А где почитать, у go есть планы по дальнейшему развитию дженериков в следующих за 1.18 версиях?
Что-то я потыкался - прикольно, но пока оно прокатит только для крайне ограниченного числа кейсов. Больше всего не хватает дженериков на методах.
243 2211963
>>211957
Их так и оставят, а потом задепрекейтят.
244 2211965
Кстати, а есть какие-то объективные причины, почему все жалуются на обработку ошибок в го?

Вот такие как этот
>>209433

Ладно я, я начинал с си, где нет этих исключений, и у меня вообще нет вопросов.
Еще трогал хаскели и расты.
Почему все писаются от Option в них, а в го та же пара возвращаемых значений - плохо?
245 2211972
>>211965
Ну в оптион языках, компилятор по голове не погладит за то, что забыл обработать ошибку/нулл, а в го можно хуй забить или забыть и получить ошибку в рантайме. Так думаю.
не знаком ни с одним из этих языков если что
246 2211977
>>211965
"Все", кто жалуется на обработку ошибок в Go, и "все", кто писается от Option - это две разные непересекающиеся группы людей. На растах-хаскеллях ничего реального не пишут, и интересны они только борщехлёбам, которые и от отсутствия изменяемых переменных в восторге. От сишки-обёртки над ассемблером многого не ждут. А го продвигают чуть ли не как убийцу промышленных языков, при этом не давая их возможностей.
247 2211988
Сап, двощ. После курсов местной конторы есть возможность пройти у них собес на Го-разработчика (на деле фулстака, ибо придётся писать немного логики на фронте). В технологиях числятся Докер, Кубернетис, Постгре, Монго, Редис. Тем кто уже устроился на работу, какие требования были у вашего работодателя и какие вопросы были на собесе?

Я скорее всего завалю ибо тот курс был первый раз когда я вообще написал на языке что-то вменяемое, но почему бы не попробовать?
248 2212264
>>211957
Главная причина почему не сделали дженерики в методах - это по тому что это усложнит ту часть компилятора и рантайма, который чекает имплементит ли данный тип данный интерфейс. Я не думаю что это что-то принципиально невыполнимое, но пока не ясно нужно ли это вообще кому-либо.
249 2212273
>>212264
С interface{} на типобезопасность им было похуй, а в дженериках она вдруг понадобилась?
250 2212289
>>212273

>ещё не понял, что все говносообщество - сборище двуликих пидорасов

251 2212313
>>212273
Ну, всегда есть места, где нужно принять любой тип, и не важно, что это interface{}, any или Object.
252 2212357
>>212313
Всегда есть места, где нужно принять за щеку - например в комьюнити Go
253 2212359
Бля, на хедхантере куча джуновских го вакансий, все ищут себе молодых и перспективных.
А в пиндосии также? Или это говно только у нас популярно, потому что быстро и недорого?
254 2212363
>>212273
При чем тут пустой интерфейс? Я про имплиментацию up-casting/down-casting в компиляторе/рантайме говорю.
255 2212368
>>212359

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

хз, почему оно так взелетело.
да, язык очень приятный и быстрый, но раст-то круче
256 2212369
>>212368

>но раст-то круче


сука ты по всей борде меня преследуешь что ли блять...
в /b/ с тобой недавно общались
257 2212376
>>212368

вот похожие мысли

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

но вот как программист, хотелось бы чего-то более лаконичного, с возможностью каких-то изящных конструкций (раст, скала) и еще большей производительностью
258 2212528
>>212368
Поддержка у Go лучше, заходишь в любой сервис (heroku как пример), там сразу список из php/java/node/go, rust'a либо вообще нет, либо поддерживатеся на пол-шишечки.
259 2212539
>>212359
Это вакансии танцовщиц go-go тебе в выдачу попали
260 2212542
>>212539
Go Go Power Rangers ? ? ?
261 2212921
Работодателю нужно чтобы я срочно пересел с питона на го, но так как я тупой хуй и никогда со строго типизированными языками не работал, до меня доходит с трудом. Короче мне готовы оплатить курс от инфоцыган. Посоветуйте какой нить не всратый.
262 2212948
>>212921
Шварценегера смотри. Но его можно спиздить, а деньги пропить.
https://pro.academind.com/p/golang-the-practical-guide
15963858261720.png811 Кб, 1917x1077
263 2213203
>>211988
По самому языку будут спрашивать типовые задачки про слайсы/мапы/стринги/указатели и многопоточность: горутины, каналы и пакет sync. Если не дурак, то за пару дней нагуглишь на том же хабре и вызубришь, мне искать лень, сорян. Дальше обычно не лезут, все остальное скорее всего будет ебкой по сопутствующему стеку: SQL-запрос попросят написать-оптимизировать и что-нибудь про деплой и микросервисы спросят. Но я перекатывался с другого стека сразу на миддла, ко мне отношение изначально менее предвзятое было.
264 2213265
>>212921

нахуй инфоцыган
сначала gobyexample, что бы попробовать язык
потом бесплатный курс на степике
265 2213349
>>213265
В целом согласен, но в данном случае конторе сильно надо и она готова платить за это, то почему бы и нет?
Другой анон
266 2213354
>>213349

Так результат будет хуевый + инфоцыган кормить - моветон.
267 2213367
советую вкатунам серию от этого чувака
https://www.youtube.com/watch?v=VzBGi_n65iU
268 2213866
>>211965
В Си можно написать макрос, чтобы не писать один и тот же код для обработки ошибок множество раз, а в Го нет. Поэтому и бугурт
269 2213923
>>165418 (OP)
Ну и чем го лучше питона?
270 2213925
>>213923
тем что питон легаси на микросервисах и с него все уходят, работу через пару лет пиздонистом будет сложно найти
271 2213966
>>213925
Её и пару лет назад было сложно найти. Слишком поздно для бэка, слишком рано для нейроговга.
272 2213997
>>213925
можно вкатиться к вам, если у меня мак? не могу в линукс совсем
заебало, что полторы вакансии для ios
273 2214013
>>213997
думаешь, так просто всё? щас главный треда подойдёт, посмотрит кто ты, откуда, чем живёшь-дышишь...
274 2214020
>>213923
Ничем не лучше и не хуже. Хотя оба языка по заявлению разработчиков универсальные и мультипарадигменные, каждый из них хорош только в своих узких задачах, где чаще всего и применяется. Чем ты занимаешься в IT? CRUDы, наверное, на джанге/фласке+химии проще писать, чем на го.
>>213997
Не можешь в десктопный линукс или вообще в линукс? Если первое - то всё нормально, сейчас всё равно всё в контейнерах, особенно в го.
Если второе - то тебе стоит задуматься, стоит ли вообще заниматься бекендом, независимо от языка.
275 2214048
>>214013
как раз и думаю, что все дохуя сложно
что в универе, что после не могу его переваривать, да и он меня
>>214020
скорее в первый, но я слишком сильно хочу перекатиться из Германии в Новую Зеландию или Нидерланды и только го сейчас выглядит most indemand

Спасибо за внимание
276 2214843
>>214048
В консольке с brew и другими утилитами работать умеешь? Если не пугает, то велкам, никаких подводных. У нас около половины гоферов — маководы, остальные сидят на линуксах разной степени красноглазия: кто-то как на главной системе, кто-то дуалбутит, а кто-то компилирует ядро прямо в винде через WSL как я, очень хорошо сделали, разве что скорость доступа к виндовым файлам из-за эмуляции ntfs хромает.
277 2214895
Как понять, что микросервис нужно писать на го, а не на петухоне?
Есть к примеру дефолтное круд приложение. Что то забираешь из базы, что то пишешь, и результат отдаешь через апи
Это же никак от быстродействия самого языка не зависит, а только от скорости обработки в бд. Ну если это не хайлоад какой конечно, хотя в кубере можно все разбалансить
Короче, тут наверное много питонистов в прошлом, к вам вопрос, почему вы решили пересесть на го, если 90% задач одинаковые что там, что тут?
278 2214927
>>214895
На го у нас написана веб морда, которая обслуживает дохуя конектов и делает запросы в другие сервисы с бизнес-логикой на питоне обмазанным типизацией
279 2215042
>>214927

>питоне обмазанным типизацией


а как так? фастапи?
280 2215076
>>215042

>а как так? фастапи?


Нет, просто обмазались mypy и окунаем в говно на ревью, если отсутвтуют типы в местах, где они помогают понимать код
281 2216177
https://github.com/golang/exp/blob/master/slices/slices.go

Сука, ну нахуя они эту тильду сраную сделали? Нельзя было её поведение сделать по дефолту что-ли?
.png354 Кб, 1366x615
282 2216547
>>216177
Какая-то хуйня без задач.
И это насколько ж надо быть душным, чтобы высрать такую простыню. А ещё что-то на "сложные" кресты гонят.
283 2216647
Если я приду на вакансию ГО с другого стека ( sap) с примерно 2-3 года опыта, то меня будут оценивать как вкатыша или как человека? Был у кого такой опыт? что ожидать, сколько просить?
284 2216666
>>216647
Если умеешь распределенные системы строить то как на нормального человека, если нет то как на вкатыша
285 2216674
>>216177

>Delete is O(len(s)-(j-i))


кек
286 2216719
чисто теоретически, если у меня два офера от озона и мейлру (вк), то что лучше? inb4 одна хуйня
287 2216861
>>216674
Ну а ты как хотел? O(len(s)-j)? Практика показала, что мутабельность дороже обходится. Или новый слайс возвращать за деревом удаленных интервалов, чтобы на лету трансляцию индекса делать? Тогда на лукапах по кеш-миссам всосешь.
>>216719
ВК чуть получше будет, но по факту обе суть зашквар.
288 2216877
>>216719
По наблюдениям в озоне редкостные чсвшные мудаки работают.
289 2217190
>>216877
Кодеры в массе своей это и есть чсвшные мудаки. Я в Ciklum сходил когда-то на собеседование, меня там чуть-ли не унижали
290 2217493
>>216719
Что та хуйня, что это хуйня. Выбирай по задачам, жизнь от одного отдела к другому сильно отличается
291 2217586
>>214020
Крудами крудами, я почему про go и спросил.
292 2217602
>>217586
Ну, на го они более вербозные, и дело даже не в обработке ошибок. Но писать можно, и за них платят немного больше чем на других языках.
Из плюсов - неплохой баланс между временем написания и производительностью сервиса. Но как и почти много где - можно немного сдвинуть этот показатель в ту или иную сторону, например используя sync.Pool можно добиться практически полного отказа от аллокаций в хипе ценой сложности написания кода, или использовать пустые интерфейсы+рефлексию, чтобы делать универсальные библиотеки, но ценой производительности.
Но главная особенность го - это всё-таки работа с асинхронностью.
Если всё что тебе нужно - это аналог js-ного Promise.all, то ты, конечно, не ощутишь разницу, в этом плане sync.WaitGroup более неудобная штука. Но зато она даёт куда больше возможностей, особенно в сочетании с каналами.
293 2217603
>>217602

> Но как и почти много где


Пардон, время позднее, уже плохо соображаю
294 2218019
>>216719

нах справшиваешь, где больше денег пообещали, туда иди.

ходил с ними общаться, у вк зп пощедрее, а у озона зато щедрые опиционы. остался у всебя, в другой компании из вотвася
295 2218022
>>216177

>https://github.com/golang/exp/blob/master/slices/slices.go



а я чет не врубаюсь, что тильда делает в определении типа?
гугл подскаживает только битовое не
296 2218250
>>218022
https://github.com/golang/go/issues/45346

> An approximation ~T is only valid if the underlying type of T is itself T



Смотри, у тебя есть
type MyString string и функция, которая принимает []string
С тильдой ты сможешь использовать эту функцию для []MyString без приведения типа в цикле.
297 2218307
>>218250
Пиздец дегроды. В нормальных языках вообще никакой разницы нет и никакие тильды не нужны.
298 2218329
>>218307
Это синтаксическая соль. Сделано специально, чтобы не хотелось юзать дженерики.
А err != nil специально, чтобы не хотелось обрабатывать ошибки
299 2218404
>>218307
Ну, в целом это нужно для создания энумов, иногда полезно указать, что у нас не просто стринг или инт, а что это какой-то конкретный флаг или ключ, в общем случае тип у которого лимитированное количество валидных значений, как например syscall.Signal или syscall.Errno
300 2219087
Извиняюсь, за скорее всего платиновый вопрос: за полгода можно норм выучиться на джуна, чтобы устроиться? Они вообще нужны? Есть сейчас полгода работы на питоне с асинхронщиной, до этого было совсем чутка java\spring. Просто небольшой анализ вакансий — дохуя лет разработки до и свитч на го или же вообще ничего толком не написано. Поэтому и интересно, когда через полгода буду знать базу, то смогу устроиться куда-нибудь go-джуном?
301 2219196
>>219087

на го джуны практически не нужны
сам язык простой, но его используют, когда сложность систем уже высока
работай на питончике, пока не почувствуешь себя крепким миддлом, параллельно попробуй втащить на работе какой-нибудь сервис на го, а потом дуй к нам на x2
302 2219226
>>219196
А мне наоборот пришлось откатиться до богомерзкой джанги, так как платят больше на 50-80к чем на прошлом месте где писал на го сервисы с относительно низкоуровневным сетевым взаимодействием. Однако как мне кажется зря я это сделал, так как стал дико выгорать из-за того что мне это совсем не интересно, ощущение как будто отправили назад учиться в начальную школу лол.
303 2219232
>>219226
странно, уже второй год гошка рвет всех по зп, кроме скалы

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

а здесь эти сраные solid и clean architecture помноженные на вербозность самого го
image.png2 Кб, 239x101
304 2219263
>>204869
Идеально описывает место
305 2219630
Как у вас методы перегружаются? Чет не найду в доке
306 2219639
>>219630
Никак. Страдай.
307 2219643
>>219630
дженерики юзай
ой, их же до сих пор нет в 2к22
аххахаха блять
308 2220773
>>219643
Женерики миф, гугл скорее выкинет го нахуй когда его поддержка станет нецелесообразной и сделает что-то новое хайповое, как они это делали уже ни раз.
309 2220792
>>220773

гошечку уже не выкинут
слишком уж много написано на ней
уже хватает абсолютно всего, со временем появляется и доп. сахар, вроде дженериков
310 2220796
>>216719
а скок предлагают сейчас?
311 2220803
>>220792
А уж на коболе сколько написано.
312 2220830
>>220803
Все таки кобол не за один день выкинули, а вспомни как флеш мучительно умирал, пердел кашлял, но его до последнего порносайты и казино использовали, пока не исчезли браузеры с ним.
313 2220959
>>219643
>>220773
Шизик уймись
314 2221021
>>220803
Немного написано. Когда писали на коболе, айти индустрия была на порядки меньше. Но на коболе написаны некоторые критически важные системы, поэтому он жив и вероятно переживет зумеров.
315 2221060
Придумал охуенную задачу, чтобы попускать годебилов:

Есть джейсонины произвольной структуры. Их надо переложить в другие джейсонины, где все поля объектов с именем "fizz" будут называться "buzz".
316 2221064
>>221060
Ты случайно не нодежс макака возомнившая себя богом джейсонов из-за пары функций в стандарте языка?
317 2221069
>>221064
JSON = JavaScript Object Notation

Ноджс-адепты боги джсонов по определению.

Но ты решай, решай, не отвлекайся. Там всего-то джсоны переложить.
318 2221140
>>221060
С ГОвном тут только свой парсер писать.
319 2221148
>>221060
Да регуляркой заменить "fizz"\s∗: на "buzz": и не ебать мозг. У вложенных жысонов внутри строк кавычки будут экранированы, так что должно быть правильно. Хуйня задача. Лучше будет смержить два жысона произвольного формата, вот там пиздец, да. Нужно json.RawMessage парсить в map[string]interface{} и дальше рекурсивно спускаться. Енджой ер статик типизейшн, епта.
320 2221150
>>221069
Так javascript прошивка для json?
321 2221159
>>221140
Тащемта да. Причем если это будет уже не JSON, а XML то вообще ебать цирк с конями начнется. Дефолтные encoding/xxx либы вообще по-уебански как-то сделаны с этим маршалингом непосредственно в гошные структуры. Для простых случаев может норм, но когда надо с документами вытворять всякое, то случается пук.
322 2221160
>>221148
{"хуй":"там fizz плавал"}
323 2221162
>>221148
Fizz-buzz это так для разминки. В реальных задачах такими костылями не отделаешься.
324 2221165
>>221060
>>221140
>>221159
А кто-то действительно пишет на говне что-то кроме веб-морд и прочего сетевого говна? Он же совсем невыразителен для чего то кроме этого, не дай бог на нем бизнес-логику писать
325 2221171
>>221165
У нас так его взяли для бэка, ведь хайпово, молодежно, быстро и надежно, и вообще бэк только хатэтэпе-методы дергает, а оказалось что таки да, надо ещё кое-какую бизнес-логику там крутить.
326 2221193
>>221160
Условие перечитай, дебик.

> поля объектов с именем "fizz" будут называться "buzz"


Поля с именем, а не значения полей, содержащих подстроку.
>>221162
Ну вот я тебе получше задачу дал, более практическую: смержить два жысона. Типа {"foo":{"bar":1}} ⨁ {"foo":{"baz":2}} ≡ {"foo":{"bar":1,"baz":2}} На любом языке с статической типизацией это боль подобное реализовывать.
327 2221246
>>221193

> Нужно json.RawMessage парсить в map[string]interface{} и дальше рекурсивно спускаться.



Тут надо делать структуры, в которые раскладываются разобранные жсонины, по типу как DOM для XML, и делать функцию для слияния, которая из двух таких создает третью. Обычный map[string]interface{} например будет проебывать порядок полей.
328 2221249
>>221246

> Обычный map[string]interface{} например будет проебывать порядок полей.


> An object is an unordered set of name/value pairs. https://www.json.org/json-en.html


Че?
329 2221258
>>221249
Похуй на спеку, по факту порядок полей в жсонинах существует.
330 2221272
>>221258
Пиздос. Не хотел бы я после тебя проект поддерживать...
331 2221279
>>221272
Знаешь, жсонины иногда читают люди, а иногда даже суют из в diff. И тут ты такой: а срать мне на ваш порядок полей, в спеке не написано, щас всё перемешаю к хуям собачьим и хавайте что дали.
332 2221282
>>221279
Но ведь в джейсоны сериализуют хешмапы, а там ключи по определению абы как.
333 2221287
>>221282
Да как бы далеко не всегда. Чаще всего в них самые обычные бизнес-данные типа профайлов пользователей. Так-то похуй, в каком порядке поля, но если вдруг надо будет продиффать два таких документа, то лучше чтобы порядок имелся.
334 2221289
>>221287
Тогда нехуй в виде ключей в мапе хранить.
335 2221295
>>221287
Ну вот когда диффать потребуется, тогда на лету и канонизируешь через jq --sort-keys, а до этого нехуй требовать выдуманную из пизды дополнительную структуру, спекой не предусмотренную.
336 2221306
>>221295

> jq --sort-keys


Как же оно сортирует поля, если порядок спекой не установлен. Хмм...
337 2221308
>>221306
Вот вам наше джейсон апи. Требования к клиенту: он должен быть написан на жс или другом языке для даунов, где объекты по спеке не итерируемы но фактически соблюдается порядок ключей при сериализации в ждейсон...
338 2221316
>>221306
Лексиграфически, епта. Спека не устанавливает порядок полей, поэтому сериализовать можно как угодно. Строго говоря, это всего лишь костыль имеено что для наколеночного диффа, т.к. для каноникализации этого недостаточно, нужно иначе убирать половину флоатов и все эскейп последовательности, кроме кавычек.
339 2221342
>>221159

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


Хуйню спизданул.
340 2221485
>>221308
Кстати не знаю как json, но fmt пакет сортирует ключи мапы.
341 2221578
бля когда уже там 1.18....
342 2221583
>>221578
Пока не релизнули, существует шанс больше нуля, что их выпилят обратно.
343 2221656
>>221583
Хейтер, спок. Наслаждайся последними деньками с возможностью высраться на тему дженериков, скоро будет неактуально
344 2221658
>>221656
А может я перестану быть хейтером, когда сабж станет похожим на привычные мне языки, кто знает.
345 2221662
>>221658
А зачем делать еще одину жабу, шарпы, котлин или тайпскрипт? или что ты там котируешь? Пусть лучше будет куча языков, хороших и разных.
346 2221751
>>221662
Вот это плюсую. Две пагубные тенденции имеют место быть
Чтобы все языки были похожи 1 в 1
Быть программистом язык нейм, а не просто быть программистом.
347 2221858
>>221751
Программист одного фреймворка > программист одного языка > программист
348 2221863
>>221858
Птушкин, плиз, пиздуй в свою бурсу к корешам бухать .
349 2221867
>>221662
Жаба старая, котлин не нужен (фичи котлина переносят в jdk, а теперь еще loom в превью), шарпы забивают на обратную совместимость и закрыли себе дорогу в энтерпрайз (кроме Windows-house компаний), тайпскрипт это попытка мелкомягких подмять под себя js хипстеров(EEE).
Го единственный современный язык, который массово принял бизнес и инвестирует в него ресурсы
350 2221877
>>221867

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



В последние годы Го развивается с той же скоростью, что и жаба в период с 6 по 8 версии, то есть почти никак. Так что не знаю, какая тут современность. Вот если дженерики будут вменяемые, то уже да, значительный шаг вперед.
351 2221885
>>221867

>Жаба старая


Тем не менее на ней очень много всего пишется, да и в чем старость? Стримы есть, лум наверняка будет к следующему LTS или через один LTS, для всякой энтерпрайзной еботни вроде банков, финтехов, ритейла, где куча бизнес-логики и нужна поддержка десятилетиями, это отличный вариант, как ни крути.
352 2221896
>>221863
А что не так? Узкий специалист всегда будет знать в своей области поболе челов, которые распыляются на 100500 языков.
353 2221919
>>221896
Нет. Челы делятся на тех кто развивается и тех кто остановился в развитии. Раньше например среди пыхарей было много CMS простофиль, времена меняются, теперь полно непробиваемых laravel + vuejs кулибиных. Их попроси сделать сервис конвертации видео, они начнут его делать на пхп очередях просто потому что они встроены в ларавел.
354 2222374
А здесь вакансии можно писать?
Ищу себе в команду аутистов в области edtech 2 мидл+ гоферов, можно в офис мск/питер, можно чистая удаленка, новенький макбук, дмс, полный список уже обычных для всех компаний плюшек.
вилка 200-400, в зависимости от левела, для рокстаров - обсудим отдельно

если интересно - пишите на Anona6D717ANUSprotonmaioj!lPUNCTUMcFA+om
я вас перенаправлю на херочек, которые проведут по процессу найма
а то они блин деревьев в лесу сами не найдут
355 2222472
>>221165
Я в банке работаю, у нас дохера всего на го, от обработки транзакций, до всяких бизнесовых приколюх, акций и тп.
Полёт нормальный.
356 2222474
>>221060
Примерно одинаково на всех языках будет написано. В го можно смапить json'ину в map[string]interface{} и рекурсивно пройтись по всему этому говну с коллбеком `func (obj interface{})`, где можно поменять исходную мапу. Работать будет в целом нормально, пока json не раздуется до тех размеров, когда придется потоковый процессинг писать.
357 2222512
>>221165
Девопс, пчёл. В сравнении с питоновским/пхпшным/перловым/башевым говнокодом админов - вообще сказка
358 2222517
>>222512
Ога, бинарные скрипты с километровыми исходниками, которые хуй по-быстрому поправишь, просто топчик.
359 2222529
>>222517
А кашу на баше или перловку ты охуенно быстро правишь, да?
360 2222597
>>222529
Да, только не перл, а питон. Там кто угодно разберётся и поправит быстро. Кроме тебя, видимо.
361 2223136
>>222472
Что за банк? Сбер/Тиньк?
362 2223771
>>223136
врядли, у них все процессинги уже дервние, на джавах/скалах

хотя гошка есть и у тех, и других, но на небанковыских направлениях
wtf.png24 Кб, 873x345
363 2223882
>>205661
какой ещё нахуй паблик у них в тесте
364 2223903
>>223882
Это то что не приват
365 2224525
Наконец нашлось достойное применение для достойного языка
https://www.youtube.com/watch?v=ZACOc-NwV0c
изображение.png845 Кб, 1280x720
366 2224609
>>224525
Лол
367 2224630
>>224525
Эх, тянка похожа на мою школьную еот
368 2224636
>>224630
Видимо ты не до конца понял, для чего нужна штука, которую она рендерит
369 2224674
>>222374
Зачем тебе в команде аутисты? (99% посетителей этой доски)
370 2224721
>>224674
я сам аутист
мне будет с такими же как я комфортно работать
не кабанчиков же мне нанимать
371 2224873
>>224721
А аутисты проект двигать смогут? У нас на крупные фичи раз в пару месяцев общий сбор и обсуждение на 1-2 часа.
372 2224898
как менять стек, если гандоны с hh пишут про опыт ПЩ не меньше года. Понятно что для некоторых это не очень принципиально, но тем не менее. Мне что сражаться за место с вчерашними студентами имея опыт коммерческой разработки в несколько лет?
Хочу в начале след года ( до весны) сменить стек, сейчас вот начал к ГОвну присматриваться
373 2224934
>>224898
pop <старый_стэк>
push <новый_стэк>
374 2225015
>>224898
Когда менял стек я соврал про 1.5 года опыта на го. Какая разница, если я всё равно знал как CRUDы писать на го и писал их на других языках?
375 2225027
>>225015
в резюме у тебя что написано то, что работал у Кабан Кабаныча на ГОвне? нет ведь
хотя я тоже могу скромно написать что просто бэкэндером провеслал 2 года
376 2225028
>>224898
C какого стека уходишь? Если с пхп или питуна, то перекатиться легко, сейчас полно проектов, которые решили зачем-то переписать с них на ГО.
377 2225035
>>225028
SAP opentext, писал круды все как полагается. Но оставаться и дальше на этой поделке нет желания, потому что развития я тут не вижу
378 2226142
>>219232

>solid и clean architecture


А я думал в сообществе Го мартиновский буллшит котируется меньше, чем в других стеках.
379 2226143
Как гошный GC трейсит через нетипизированные указатели (unsafe.Pointer). Например, есть unsafe.Pointer на структуру, в которой тоже есть указатели. Как GC их определяет?
380 2226150
>>226143
Они только для тебя нетипизированные.
381 2226157
>>226150
Не мог бы ты раскрыть? Ты хочешь сказать, что для них в рантайме отслеживается тип того, на что они указывают? Насколько я знаю, размер unsafe.Pointer - честный один указатель и объекты в Го не имеют префикса с указателем на RTTI (как в Java/C++). Как же это тогда работает?
382 2226165
>>224898
Мне кажется, в этом плане ПЩ сейчас, наоборот, самый дружелюбный к перекатывальщикам. Если в резюме не хватает баззвордов, можно вспомнить всё говно, с которым ты работал, не зависящее от языка (Я кэп, да).
383 2226167
>>165418 (OP)
добавьте в шапку эту писанину китайца - https://go101.org/article/101.html
оно стоит того
384 2226452
>>224898
Так изи же, сменил Java->Go с х2.5 без коммерческого опыта на говне
385 2226608
>>165418 (OP)
Без коммерческого опыта вообще не вкатиться?
386 2226620
387 2226627
>>226620
Но я не хочу работать на джаве...
388 2226638
>>226627
Так и не работай на ней.
389 2226644
>>226638
Если бы рынок дотнета не был полной залупой, то даже бы не раздумывал. Но увы, в го меня не пустят, а остается пыха или джава
390 2227159
>>226608
Вкатиться реально, и даже легче чем в js/питон, т.к. говнокурсов по го не так и много и он не так популярен среди вайтишников, а компаниям нужны ждуны
391 2227164
>>226143
Ну что же вы, гоферы... Кто-то же должен знать, здесь же элита всея российского IT сидит.
392 2227229
>>227159
Что знаешь? Что можешь сделать? Как учил?

Мимо вкатун
Screenshot20211201221100.png13 Кб, 309x210
393 2227262
>>226143
Не читал особо код рантайма, может там что-то по другому работает, чем для обычных кодеров (хотя я сомневаюсь), но в общем случае с unsafe.Pointer'ом мало что полезного можно сделать. Но если мы точно знаем что это поинтер на интерфес (например пустой) - из него мы можем получить реальный тип
394 2227366
>>226644
Пару раз в год появляются вакансии на джуна без коммерческого опыта, так что шансы есть. Ждать придется долго. А может и нет.
395 2227370
Вкатываюсь к вам с Битрикса. 70к для меня стало маловато, хочу 370к. Есть норм книга по алгосам и штоб примеры были на го?
396 2227795
Go - это карьерный выбор хуевого мыдла.

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

В общем, если вы посредственность - отличный язык, всем остальным не рекомендую.
397 2227826
>>227795
Java - это карьерный выбор хуевого мыдла.

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

В общем, если вы посредственность - отличный язык, всем остальным не рекомендую.
398 2227828
>>227795
Java-петух пригорел
У гоферов ЗП на уровне джавы, пыхи джээсы и питоны оплачиваются ниже.
Пиздуй поддерживать абстрактное легаси говно в говнобанке, раб
399 2227864
>>227826
Всё так.
мимо жаба господин 200к/сек
400 2227890
>>227826
>>227828
>>227864

Почему если кто-то пишет плохое про Го, то это обязательно джавист? Я, конечно, знаю джавистов, которым не нравится Го (в их числе есть те, кто даже писал в проде на Го), но ведь всяких сишарперов, а тем более питухонеров и пыхеров Го должен волновать сильнее.
401 2227892
>>227795
Как будто нельзя писать на нескольких языках, на всех проектах бек был на 2-3 языках написан.
402 2227922
>>226608
вкатиться, со мной в отделе работает 30-летний вкатун после курсов. мне никто не поверит, конечно...
image.png4 Мб, 1728x1728
403 2227968
я обязательно перекачусь на ПЩ с 2 годами опыта другого языка
404 2227976
>>227795

>Джунов туда не берут


Меня взяли
405 2228018
>>227968
Так ведь изи же. Я с 2 годами опыта на тайпскрипте получил 3 офера с 3 собесов
406 2228021
>>228018
ну вот в январе начну бегать по собесикам, сейчас гошечу пока подтяну
скажи гит свой( если есть)показывал кому нибудь на этих 3 собесах? и просили ли тебя ин риал тайм решать задачу
407 2228022
>>228021

> сейчас гошечу пока подтяну


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

> скажи гит свой( если есть)показывал кому нибудь на этих 3 собесах?


Указан в резюме, но там на го ничего не было, да и на других языках там хелоуворолды разного уровня встратости. Но да, 2-х летней давности.

> и просили ли тебя ин риал тайм решать задачу


Почти на всех собесах давали небольшое тестовое задание уровня CRUD сервис запилить. На одном из собесов дали 10 снипитов уровня https://habr.com/ru/company/vk/blog/314804/ и спрашивали что выведет, но нигде прям лайфкодинга не было
408 2228061
Ну и что с этим Govnom делать? Три стажерские вакансии на всю Москву? И куда эти вкатуны с курсов идут? Я вот студент и в принципе не могу вкатиться в этот чудный язык, так как в Яндексе у меня уже бан на полгода, в озоне нужно 40 часов батрачить, а в wildberries меня просто игнорят, лол.
409 2228085
>>228061
Да что ты говоришь? Целую стандартную пятидневку? Вот изверги!
410 2228133
>>228085
Меня числанут из шараги нахуй, если я буду фулл пятидневку работать.
411 2228134
>>228133
велика потеря
412 2228136
>>228134
Ну да, просрать 2.5 года жизни, кучу нервов и денег впустую, чтобы просто числануться без сраной бумажки в итоге.
413 2228140
>>228136
бедный ребенок(
414 2228687
>>227795
Миддлы на го сейчас порядка 250 получают
мимо
415 2230611
Чтож, начинаем перекат в ГОvno с жабы...
416 2230614
>>230611
Да, это правильно, не как некоторые с нуля пытаются вкатиться в язык для миддлов без опыта.
417 2230892
В каких случаях нужно использовать буферизованный канал, в каких не буферизованный канал? Как подобрать размер буфера?
418 2231124
Чому гошники столько получают? Он же проектировался, как язык для тупых, по словам его автора...
419 2231125
Чому гошники столько получают? Он же проектировался, как язык для тупых, по словам его автора...
420 2231133
>>231124
Потому что в силу простоты делают больше задач для бизнеса, а не меряются сложностью языка и количеством легаси, как жабошарпобляди.
421 2231144
>>230614
>>231133
Двощую, сам перекатываюсь из жабы в Го, так как в жабу меня тупо не взяли. Отсылал резюме в 200 контор, откликнулись 15, из которых на собес меня пригласили 11. Все собесы завалил.
Теперь учу новый стек.
422 2231161
>>231144
Ну ты и лошок
423 2231174
>>231144

> меня пригласили 11. Все собесы завалил.


Где вы такие собесы находите, жесть
424 2231177
>>228061

> а в wildberries меня просто игнорят


Ну и правильно, нехуй там делать
425 2231195
>>231177
Почему, а где хуй делать?
426 2231218
>>231195
https://vc.ru/trade/182301-it-specialisty-wildberries-zhaluyutsya-na-massovye-uvolneniya-a-marketpleys-ih-otricaet
год назад такая хуйня была, короче к тебе будет отношение такое же как и к грузчикам на складе
427 2231232
>>231218
Так все правильно. Какое ещё может быть отношение к взаимозаменяемой печатающей мартышке.
428 2231359
>>231133
Блин, а что, так можно было? Почему тогда ещё не всё новые бэкенды пишутся на Го?
429 2231362
>>231359
Потому что ещё нет такого количества разрабов на го, а у крупных организаций нет ресурсов на замену жабошарпоблядей гоферами, вот и приходится писать на том, что все знают.
430 2231459
>>231144
>>231174
да просто. хр ищет по ключевым словам и шлёт на техсобес,
а там скучающие "техлиды" доёбываются до всякой хуйни, которую вчера в гугле вычитали
мимокрок
431 2231558
>>230892

> В каких случаях нужно использовать буферизованный канал


В общем случае - когда ты хочешь делать select+send/receive с дефолтом, чтобы не зависать на этой операции, если на другом конце слоупочат. Воспринимай этот тип канала как внешнюю очередь сообщений.

>в каких не буферизованный канал


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

> Как подобрать размер буфера?


В большинстве случаев это либо 1, либо по количеству горутин, которые могут туда записать сообщение, это может быть удобно, когда нам нужно получить только самый первый результат или самую первую ошибку (т.е. мы читаем из канала только один раз), но при этом не создав утечку горутин.
Бывают еще экзотические варианты, вроде вебсокет-чатов, где имеет смысл брать большие буферы под каналы для отправки контента конкретному пользователю, но там значения подбираются экспериментально, обмазывайтесь логами и мониторингом.
432 2232065
Норм язык для вката или джун никому не сдался ?
433 2232068
>>232065
Джун никому не сдался. Поработай жабамакакой пару лет и можешь вкатываться.
434 2232075
>>232068
Джава мертва
435 2232094
Джава не мертва, но популярность JVM платформы постепенно падает, особенно для новых проектов.
Это связано не с тем, что джава хуевый язык или платформа говно, а потому что сейчас все становится cloud native. Нужно уметь быстро запускать небольшие сервисы, а не ждать по 3 часа, пока спринг фреймворк будет делать свою подготовительную магию.
Решением был бы quarkus/micronaut вместе с graalvm, только вот проблема в том, что со спринга очень тяжко перейти на новый фреймворк. По сути большая часть джава проектов намертво увязла в спринге, который годится для классических старых серверов с виртуалками, расположенных где-то в датацентре банка, а не для сервисов, крутящихся где-то там в амазоне.
436 2232103
>>232094

> что со спринга очень тяжко перейти на новый фреймворк


Поэтому надо всё выбрасывать и писать с нуля на другом языке языке без инфраструктуры.
jatnik.png169 Кб, 421x468
437 2232107
>>232103

>ваааа бля стабильность

438 2232112
>>232107
- Ты видишь работу на голанге?
- И я не нет. А она есть...
439 2232119
>>232103
Так никто не выбрасывает спринг и джаву в частности. Что уже написано на них - дальше поддерживается. Однако с новыми проектами уже не все так очевидно.

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

>>232112
Да еще где-то полгода назад работы было меньше, сейчас даже в таких концентраторах джавистов вроде сбера и тинька появилось довольно много голанг вакансий.
440 2232187
>>232119

>прорывные проекты по части инфраструктуры


Это что такое например?
999.JPG32 Кб, 732x231
441 2232228
Объясните пож, что тут происходит. Гуглил много и ничего похожего не нашёл.
Как это можно использовать? Похоже на интерфейс, но вроде не он
442 2232230
>>232228

>Гуглил много и ничего похожего не нашёл.


чел, я даже не программист и то понял
гугли golang struct
443 2232232
>>232228
Это какая-то дич.
444 2232237
>>232094

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


Нет, связано. Страшно подумать сколько они денег потратили в GC, а всё-таки с аллокациями на стеке это никогда не сравниться. Да и платформа является ненужной абстракцией, в реальности никому не нужно использовать один и тот же билд на железе разной архитектуры ну, кроме как в разработке под андроид
445 2232238
>>232228

> что тут происходит


По одной структуре не могу наверняка сказать, но думаю что говнокод.

> Как это можно использовать?


Создаешь в замыкании подключение, потом опять же в замыкании суешь реализации этих функций в структуру, а затем возвращаешь структуру. Профитов никаких, кроме того что используешь "функциональные" подходы вместо ООП. Вангую написано каким-то студентом с JS-ом головного мозга
446 2232275
>>232187
Всякие фреймворки для бигдаты, распределенных систем и клауда.
Тот же zookeeper, hadoop, cassandra, spark, elastic, стек нетфликса - все это требовало огромных вложений как денег, так и людских ресурсов. Сейчас уже основной стек технологий написан, и остается только его поддержка, которой может любой индус заниматься, а не только дяди с пхд по распределенным системам.
447 2232300
Как же душно написаны статьи, особенно русские, просто пиздец. Человек сеньор-goвножор пишет базовые примеры, которые сам бы никогда не писал. Лезешь в репы и глаза на затылок лезут.
Почему про реальные программы никто не пишет? Я к примеру, до сих пор не понимаю где лучше хранить url для запросов к другим апи - в самом коде или каком-то отдельном файле. Писать отдельные методы для каждого запроса или просто подгрузить конфиг из какого-нибудь json, один хер эти запросы не меняются кроме пары ключей. Ничего этого нет.
90% статей в айти - как написать хеловорлд.
image.png54 Кб, 694x532
448 2232337
И почему ты еще не вкатился анон?
449 2232365
Куда вкатываться?

https://strawpoll.com/w4crg6d7k
450 2232522
>>232337
да вот взял отпуск на декабрь, посижу нг выходные и пойду по собесикам бегать в поисках своей сотыги! а там глядишь и сбегу от своего кабана к другому но уже на ГОвне
451 2232531
>>232337
Что значит agile для обычного разработчика?
452 2232538
>>232531
Ничего не значит. Просто есть категория шизиков, которые каким-то образом умудряются найти связь между гитом, микросервисами и эджайлом.
453 2232624
Сто значит микросервисы? Если, к примеру, просто разделить проект на более мелкие, которые общаются между собой вебхуками, это считается за микросервис? Или там обязательно должен использоваться grps, протофацлв и пр?
454 2232635
>>232531
Переработки.
455 2232691
>>232275

>zookeeper, hadoop, cassandra, spark, elastic


Это всё инфраструктура и никогда обычными бэкенд-девами не писалось. То, что это всё написано на Джаве, еще не значит, что ковырятели Спринга имеют к этому отношение.
456 2232692
>>232691
>>232275

>то, что это всё написано на Джаве


Хер знает зачем, кстати.
457 2232707
>>232624

>Если, к примеру, просто разделить проект на более мелкие, которые общаются между собой вебхуками, это считается за микросервис?


Если различия только в этом, то это распределенный монолит, микросервисы должны быть потенциально независимы друг от друга, в том числе и в плане масштабирования
458 2232712
Go для вката язык не сложный ? Я вообще не представляю как программирование происходит
459 2232718
>>232712
Сложный
460 2232725
>>232531
В большинстве случаев нихуя, но иногда в этом свои приколы, тут от компании зависит и от того что пилится и как. Где-то это всё хуйня, Миша, давай по новой и так каждый спринт, жизнь в вечной переделке. Где-то должны обосраться но успеть всё в спринт и похуй что у тебя жена рожает, Сычёв. Где-то это как в книжке написано плиннинг в начале, ретро и демо в конце, промежуточные синки, дейлики, 1+1, разноцветные стикеры миро, 2 часа обсуждать сколько сторипоинтов будет перекрасить синюю кнопку в зелёную и прочая залупа, а в перерывах между созвонами в зуме пилишь хоть какой-то код. Где-то это упирается в то что хуй чего по быстрому сделаешь в команде, у Ололоева на этот спринт задачи есть, а то что тебе сейчас нужно будет заложено в следующий спринт через 2 недели.
461 2232726
>>232337
Надо будет им написать)
462 2232727
>>232718
А если у меня за плечами делфи, перл, питон и с++?
463 2232728
>>232727
Тогда почему ты такие вопросы задаешь?
464 2232732
>>232728
Я другой анон. Просто если еботня как с растом или с++, то не очень хочется связываться.
465 2232733
>>232707
Ну, они вполне независимы, со своими бд. Просто для того чтоб работал один сервис, должна приходить информация от другого. К примеру, один считывает данные с сайта и отправляет его в пользование другим сервисам, которые выкладывают её каждый на своём сайте.
Или это должны быть вообще несвязанные между собой вещи? Так это совсем разные проекты получается, а не микросервисная архитектура, если они каким-то образом должны работать, если отвалилась основная.
466 2232734
>>232732
Если сравнивать с питоном и любям языком где есть ооп, то го отличается кардинально.
467 2232754
>>232734

>Процедурныя язык


>Сильно отличается от языков с поддержкой ооп


Ебало этого говноеда представили?
468 2232761
>>232692
А на чем еще писать, кроме как на жабе в те времена? Из ООП языков только она была достаточно простой, чтобы избежать кучи ошибок, и кроссплатформенной.
Сейчас на С++ стало чуть легче пользоваться, поэтому возможно на них будут писать дальнейшие инфраструктурные проекты.

А так, даже сейчас тяжело предложить иные альтернативы жабы в таких проектах. Написать на Го hadoop или elastic имхо будет тяжело. Хотя тот же Zinc как замена эластика уже существует.
469 2232767
>>165429
глянь растланг
470 2232769
>>232337
А это кто?
471 2232843
>>232754

> Пщ


> Процедурныя язык


Что еще расскажешь?
472 2232847
>>232843
Го - процедурный язык.
473 2232991
Насколько хорош подход в Го, где на каждом проекте пилят свой велосипед?
Из плюсов могу выделить, что это может быть просто интересно, с нуля собирать свою инфраструктуру под проект.
С другой стороны, когда ты увольняешься и приходишь на другую работу, то там уже стек технологий будет отличаться. И что тогда?

Почему до сих пор нет единого фреймворка вроде laravel/django/flask/asp.net/spring?
474 2232995
>>232991

>Почему до сих пор нет единого фреймворка вроде laravel/django/flask/asp.net/spring?


Это придумано для людей с низкими умственными способностями, которые будут работать за копейки винтиком в системе

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


Будешь расти как программист-инженер, а не останешься макакой одного фреймворка
475 2232997
>>232995

>Будешь расти как программист-инженер


Но ведь разве не инженер собирает проект из уже готовых частей?

>>232995

>не останешься макакой одного фреймворка


Ну, справедливости ради, стек технологий так или иначе меняется от проекта к проекту, но основной фреймворк остается.
Другое дело, что ковыряние в криво написанном велосипеде не факт, что даст полезный опыт. А если ты джун/стажер, то придя на проект с таким велосипедом, потом перейти на другое место работы будет просто тяжело. Или нет?
476 2233030
>>232991

>Почему до сих пор нет единого фреймворка вроде laravel/django/flask/asp.net/spring?


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

> Почему до сих пор нет единого фреймворка


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

>>233030

> нет аннотаций


Есть теги полей структур

> наследования


Есть встраивание
Внезапно этого набора вполне хватает, чтобы написать тот же GORM. А дженерики единственное что изменят - для пользователя это будет чуть-чуть удобнее, т.к. тогда вместо пустых интерфейсов будут конкретные типы но под капотом всё равно будет тонна рефлексии
478 2233296
Проблема голанга в скудном наборе удобных библиотек для выполнения тривиальных задач. Куда уж там до фреймворков. Приходится всю структуру расписывать заново. Одна из причин почему в го нет вакансий для джунов, которые банально не в курсе как всё должно выглядеть в производственном коде.
В итоге все проекты на го - велосипеды разной степени паршивости. Казалось бы, язык позиционируется для ускоренной разработки, но на практике всё с точностью до наоборот.
Прежде чем писать на го, надо убить пару месяцев на создание собственных библиотек. Это типа круто, позволит расти и так далее. Ну напишите тогда на брейнфаке сервер, это же позволит вам вырасти ещё лучше.
479 2233323
>>233296

> ждать удобных библиотек от языка с if err != nil

480 2233346
>>233296
Почти в любой серьезной конторе есть свои фреймворки и обвязки типо консьюмеров/продюсеров, rpc, клиентов для взаимодействия с другими сервисами. И это не зависит от языка.
481 2233352
>>233346
Нет, такой бардак только в Go.
482 2233354
>>233352
Тебе вкатунцу виднее.
483 2233414
>>232228
если внутри тестов, то похоже на мок. еще может быть конфигом для настройки хуков, но по названию не похоже. еще мб они там динамически эти функции меняют зачем-то
484 2233418
>>233323
Ничто не мешает её игнорировать
ass, _ := hole()
>>233346
Классный подход. Идешь в другую контору - становишься джуном.
485 2233507
>>233418

>Идешь в другую контору - становишься джуном.


Если ты макака которая нихуя не соображает то да, весь бэк примерно одинаковый. Основная сложность это предметная область и общее понимание как работает система, а не инструменты с помощью которых выполняются задачи.
486 2233535
>>233507
Ну, если у тебя есть время каждый проект писать с нуля, то видимо дальше курсов с ютуба ты не ушёл.
487 2233597
Как будут работать два инстанса одного микросервиса? Допустим, есть инстанс, который делает запросы на сторонее апи, но он оказался нагруженным и появилась необходимость создать ещё один.
Как в этом случае они будут работать?
488 2233599
>>233535

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


Что ты несешь поехавший, причем тут писать проект с 0 и общие библиотеки и фрейморки всей компании?
489 2233616
>>233597
Ну, реверс-прокси просто начнёт делить запросы между ними пополам, не совсем понимаю, что ты имеешь ввиду.
490 2233675
>>233616
Ну мы коннектимся к grpc серверу по адресу и порту. Как запустить ещё один инстанс микросервиса чтоб к нему бвл доступ на этот же порт и адрес? Или в докере мы запускаем несколько инстансов и он каким-то образом будет их выводить на один порт?
Просто пишут, что микросервисы хороши тем, что если не хватает ресурсов, можно просто запустить ещё один инстанс и не париться. Как это работает не совсем понимаю
491 2233699
>>233675
Внутри докера крутится DNS сервер, который переводит доменные имена в айпишники. Если у тебя несколько инстансов сервиса с одним именем, он будет делать round robin между инстансами. Можно извратиться и сделать куда более замороченнее и эффективнее, но по умолчанию балансировка идет на уровне DNS.
492 2233900
>>233675
Почитай, что такое load balancing
493 2234617
Перекатываюсь с ноды
Кто нибудь обьяснит мне, как писать на ЭТОМ. Именно всякие common best practices.
Смотришь код приложений, каждое - абсолютно уникальное блять со своими непонятными на первый взгляд велосипедами. Или же это хелловорд и хуй поймешь как это дальше разрастаться будет.
Как структурировать приложение (и че за internal)?
Допустим, я хочу связать graphql и postgres, и чтобы схемы красиво генерились, и чтобы говнокода мало было, и миграции работали. Как это сделать?
494 2234650
>>234617
Насчет структуры, нашел годный ответ тут: https://github.com/golang-standards/project-layout/blob/master/README_ru.md
496 2234710
Можно ли начинат свой вкат вайти с go? Скоро третий курс, специализация и практики т.д., а я уже успел все поверхностно потыкать из самого популярного на бэк; жабаскрипт, питон, пыха, и мне ничего из этого не нравится. Не хочу иметь дело с этими языками на проф. уровне. Так вот, можно ли без опыта сразу начать работать на го?
497 2234793
>>234710
возьми кобол, работа всегда будет
498 2234805
>>234650
Это гуглоперевод? Что за пиздец?
flat,750x,075,f-pad,750x1000,f8f8f8.u3.jpg50 Кб, 750x1000
499 2234867
>>234793
Если бы мне было похуй на чем кодить, я б взял жиес и вопрос этот не постил. Так что, нет
500 2235093
>>234867
жс не трогай, вкатыш. Я на него три года назад с крестов перешел, до сих пор доволен.
501 2235221
>>165418 (OP)

>от создателей таких шедевров, как UTF–8


а эмодзи не они делают? могут ли создатели utf-8 перевернуть свою строку?
502 2235226
>>235221
Это будет посложнее, чем перевернуть дерево.
503 2235362
Кто подавался на стажировку в Wildberries? Что там реально спрашивают? Попускают алгоритмами, как в яндексе, или гоняют по кишкам гоуленга?

Еще у них сайт с вакансиями максимально всратый, мало того, что информация не очень хорошо структурирована, так еще и рекламу какого-то говна предлагают смотреть.
image.png311 Кб, 604x467
504 2235395
>>235362
Не лезь туда дебил, оно тебя сожрет
505 2235424
>>235395
Ебать самодур, сам же не обозначил чёткие границы ответственности между командами, сам же и страдает потом. Да и общение как с грузчиками, работать в этой хуйне себя не уважать
image.png9 Кб, 812x51
506 2235468
??????????
507 2235517
Блять почему тут тернарника нет
508 2235537
>>235517

> The reason ?: is absent from Go is that the language's designers had seen the operation used too often to create impenetrably complex expressions. The if-else form, although longer, is unquestionably clearer. A language needs only one conditional control flow construct.


Виноваты говнокодеры, а отдуваться языку. Пиша на Го, ты похож не на свободного человека, а на овоща в подгузнике и смирительной рубашке в комнате с мягкими стенами
509 2235556
Аноны, вот я вкатываюсь с нуля.
Интересна мне именно веб-разработка.
Различные стартапы и веб-сервисы.

Правильно ли я думаю, что если начну с go, то голова не будет забита корявыми практиками из js, nodejs и php?
И что это лучший язык для вката в веб, судя по его производительности и тому, как все его хвалят?

Лично мне он ооочень интересен, меня, как перфекциониста, привлекла его концепция и подход.
510 2235570
>>235537
Двачую
image.png296 Кб, 1280x720
511 2235639
512 2235736
>>235537
Я как понял концепцию языка всё должно быть простым как мясорубка и должен быть только один путь решения
513 2235783
>>235736
Да, один народ, одна вера, одна извилина.
Снимок экрана от 2021-12-12 16-34-01.png17 Кб, 442x333
514 2235830
>>235517
Выглядело бы прикольно)
515 2235835
>>235783
Тут фишка не в тупости разработчика, а в доступности для бизнеса. Можно взять разработчика из любого языка с любым уровнем и через неделю он уже сможет что-то писать, ему не нужно будет постигать азы синтаксического сахара годами и он сможет легко читать чужой код, это хорошо работает для бизнеса, позволяет быстро и без особой боли найти разработчиков на проект и быстро что-то выкатить.
Но да писать на нем больно, особенно обработка ошибок лютый пиздец
Снимок экрана от 2021-12-12 16-40-48.png16 Кб, 421x323
516 2235838
>>235830
Опечатался, быстрофикс) Как-то так
517 2235855
>>235556

> Различные стартапы


Там очень важна скорость разработки, нужны жирные и многофункциональные фреймворики, ORMы, а так же большое количество дешевых джунов с рынка труда.
У го по всем этим пунктам не очень: скорость разработки, конечно, выше, чем у языков без GC, но немного ниже, чем у популярных в вебе языков, фреймворки и ORMы в го, конечно, есть, но их не принято использовать, да и ебаться в пустые интерфесы тоже то еще удовольствие, по этому писать сырой SQL считается тут нормой, да и джунов на рынке на одну вакансию на порядок меньше чем на жыэс или питон.
Будь я CTO в стартапе - у меня на go были бы только k8s операторы, а всё остальное скорее всего на Nestjs + TypeORM + PostgreSQL, просто по тому что решает большинство задач.

> Правильно ли я думаю, что если начну с go, то голова не будет забита корявыми практиками из js, nodejs и php?


Говнокод есть в любом языке, язык сам по себе не сделает тебя говнокодером. Другой вопрос, что в каждом языке есть свои особенности, которые тебе нужно будет учитывать и уметь обходить. Например в js-е это неявный каст типов, в питоне в случае асинхронного кода следить за тем, чтобы не было синхронного io в зависимостях и так далее.

> И что это лучший язык для вката в веб


Го, как любой другой язык - это просто инструмент. Прикладные задачи, типичные для бекенда, (читай - CRUD) на го писать можно, но сложнее чем на более популярных языках, а значит более дорого для бизнеса. А те вещи, в которых го хорош, вроде удобной работы с асинхронностью или стримами (сравните https://nodejs.org/api/stream.html и https://pkg.go.dev/io) - это далеко от ежедневной работы обычного бекендера. Вроде на бекенде есть где развернуться с асинхронностью, но на практике кроме errgroup почти никогда ничего не нужно, т.е. по факту это тот же asyncio.gather или Promise.all

> И что это лучший язык для вката в веб


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

> судя по его производительности


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

> и тому, как все его хвалят


Разве что девопсы, им он действительно зашел как замена баша+питона.

> Лично мне он ооочень интересен, меня, как перфекциониста, привлекла его концепция и подход.


Ну тогда успехов во вкате, что я могу сказать. Ну и да, единственный способ научиться программировать - это программировать, по этому очень рекомендую написать форум/борду/блог, используя стандартные net/http и database/sql пакеты, без этого я бы не шел на собеседования.
Если не получиться вкатиться с го - рекомендую тайпскрипт
517 2235855
>>235556

> Различные стартапы


Там очень важна скорость разработки, нужны жирные и многофункциональные фреймворики, ORMы, а так же большое количество дешевых джунов с рынка труда.
У го по всем этим пунктам не очень: скорость разработки, конечно, выше, чем у языков без GC, но немного ниже, чем у популярных в вебе языков, фреймворки и ORMы в го, конечно, есть, но их не принято использовать, да и ебаться в пустые интерфесы тоже то еще удовольствие, по этому писать сырой SQL считается тут нормой, да и джунов на рынке на одну вакансию на порядок меньше чем на жыэс или питон.
Будь я CTO в стартапе - у меня на go были бы только k8s операторы, а всё остальное скорее всего на Nestjs + TypeORM + PostgreSQL, просто по тому что решает большинство задач.

> Правильно ли я думаю, что если начну с go, то голова не будет забита корявыми практиками из js, nodejs и php?


Говнокод есть в любом языке, язык сам по себе не сделает тебя говнокодером. Другой вопрос, что в каждом языке есть свои особенности, которые тебе нужно будет учитывать и уметь обходить. Например в js-е это неявный каст типов, в питоне в случае асинхронного кода следить за тем, чтобы не было синхронного io в зависимостях и так далее.

> И что это лучший язык для вката в веб


Го, как любой другой язык - это просто инструмент. Прикладные задачи, типичные для бекенда, (читай - CRUD) на го писать можно, но сложнее чем на более популярных языках, а значит более дорого для бизнеса. А те вещи, в которых го хорош, вроде удобной работы с асинхронностью или стримами (сравните https://nodejs.org/api/stream.html и https://pkg.go.dev/io) - это далеко от ежедневной работы обычного бекендера. Вроде на бекенде есть где развернуться с асинхронностью, но на практике кроме errgroup почти никогда ничего не нужно, т.е. по факту это тот же asyncio.gather или Promise.all

> И что это лучший язык для вката в веб


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

> судя по его производительности


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

> и тому, как все его хвалят


Разве что девопсы, им он действительно зашел как замена баша+питона.

> Лично мне он ооочень интересен, меня, как перфекциониста, привлекла его концепция и подход.


Ну тогда успехов во вкате, что я могу сказать. Ну и да, единственный способ научиться программировать - это программировать, по этому очень рекомендую написать форум/борду/блог, используя стандартные net/http и database/sql пакеты, без этого я бы не шел на собеседования.
Если не получиться вкатиться с го - рекомендую тайпскрипт
518 2235976
>>235855
Благодарю за ответ!
image.png14 Кб, 500x257
519 2235978
Роб ебать твой рот Пайк, спасибо за такие енумы
520 2235983
>>235978
Ещё есть iota, вообще пиздец.
521 2236160
>>235978
Зачем эти методы руками писал, оно разве само не работает, как с json-ом?
522 2236579
Не знаком с Go, но понадобилось собрать одно приложение, работающее чисто с сетью. Оно тихо игнорирует запросы, по всей видимости, из-за несовпадения структуры с ожидаемой, никакого логгирования автор не предусмотрел.
Есть ли менее ебанутый способ дебага, чем раскидывать принты в каждом if err != nil блоке, а совсем в идеале, собрать чтобы печатало трейс в реальном времени?
523 2236627
>>236579
Есть
524 2236720
Q all!
Стоит задача переписать скрипт с питона на что-то такое, чтобы юзер просто нажимал на ехе и все работало. Кроме excelize есть иные библиотеки для работы с Excel? Как в Го ищут нужные библиотеки? В чем разница между go get repo и если просто в импорте прописывать? Сорян за нубские вопросы, если чо.
525 2236732
>>236720
Pyinstaller будет на порядок быстрее освоить
526 2237025
>>236720
Реально, просто возьми Pyinstaller, как чел выше сказал, там буквально одну комманду ввести и будет тебе экзешник.
527 2237029
Пацаны, стоит в гошечку врываться с плюсов? Как по вакансиям?
528 2237076
>>236579
Есть. Например ты можешь запустить его в режиме отладки (понадобится голанд чтоб было удобно), либо добавить логирования на каждый чих.
529 2237147
>>235362
на стажировку был тестик вопросов из 20 вроде того как расшифровывается хттп с вариантами ответа, несколько по базовому синтаксису гошки вроде что выведет программа, пара вопросов вроде напишите физбазз (неиронично) на языке на выбор, потом беседа с интервьюером, который смотрит твой тестик и мб спросит из чего состоит слайс и что-нибудь вроде напишите селект запрос с хевингом. саму гошку в принципе знать необязательно было, я тур оф го только прошел и проебался на нескольких вопросах в тесте по гошке. ну меня в итоге эта контора пидарасов в 2020м на хуе прокрутила, когда движуха была конечно, но я с годиком опыта с повышением зп переустроился, так что вообще не жалко.
530 2237156
>>237025
>>236732
Оки, понял.
531 2237158
>>237029
У го немного другая сфера применения.

> Как по вакансиям?


Сильно зависит от предметной области. На девопс много, на остальное - сильно меньше.
sage 532 2239521
Хочу пописать на вашем говне, какую иде выбрать - vscode или sublime? Так-то я бы взял голанд не раздумывая, но он сука платный.
533 2239532
>>239521
Пиратство.
534 2239534
>>239521
Триал ресет, чел
sage 535 2239540
>>239534
>>239532
Хуй знает, как на работе на это посмотрят. Там есть белый список софта.
536 2239546
>>239540
На работе работодатель оплачивает лицензии.
537 2239551
>>239540
Они жопятся на лицензии? Беги от них
sage 538 2239554
>>239551
>>239546
Го не основной язык, поэтому для него пока (надеюсь) жопятся.
539 2239831
Ну что, дженерикам быть значит? Переобуваться уже готовы?
540 2239959
>>239831

> Переобуваться уже готовы?


Ну, у хейтеров осталось еще обработка ошибок
541 2240072
>>239959

>у хейтеров


Разве не сами гоферы кричали что НИНУЖНА?
542 2240080
>>240072
Они это кричали, бомбанув из-за хейтеров.
image.png382 Кб, 598x571
543 2240090
>>240080

>Они это кричали, бомбанув из-за хейтеров.

image.png8 Кб, 591x176
544 2240116
Уже в бете
Предвкушаете?
sage 545 2240118
>>240116
Ну охуеть, выглядит почти как нормальный язык.
546 2240146
>>240118
Осталось ещё выпилить var, имена переменных писать после типов, впилить эксепшены, классы, аннотации, сделать неиспользуемые импорты и переменные варнингами, впилить вменяемые тулзы для сборки и менеджер пакетов.
547 2240159
>>165418 (OP)
на сколько и как перекатываются мидлы с 3+ годами опыта в других ЯП в го?
548 2240165
>>240072
Не знаю кто эти гоферы, но разработчики языка никогда не говорили что они не нужны. Они только говорили, что есть проблемы, связанные с имплементацией дженериков, и придется чем-то пожертвовать, или размером бинаря и скоростью билда или скоростью в рантайме. Надеюсь выбрали первое

https://go.dev/blog/survey2019-results
549 2240173
>>240165

>2020


К этому моменту они уже заебались слышать о необходимости дженериков. До введения в черновики стабильно кричали нинужна и ссылались на высеры пайка.
550 2240178
>>240165
Картинка отвалилась
>>240173
Т.е. по твоему гугламисты в хорошем смысле это фанатики и адепты "ненужнасти", а не инженеры с огромным опытом?
fig28.png12 Кб, 722x399
551 2240182
>>240178
Сука, второй раз
552 2240210
>>240178

>Т.е. по твоему гугламисты в хорошем смысле это фанатики и адепты "ненужнасти", а не инженеры с огромным опытом?



Так они их и не собирались реализовывать до момента, когда на них начало комьюнити налегать. Если бы не этот опрос, то до сих пор бы они отодвигали решение на долгий срок, так как не считали это необходимым для нормальной разработки.
553 2240213
>>240072
я кричал. и до сих пор так считаю.
sage 554 2240285
>>240213
Жопу вытирать тоже нинужна?
555 2240296
>>240146

>менеджер пакетов


Вот прям две вещи, которые я хочу - нормальный менеджер пакетов и более адекватный отлов ошибок. С остальным я готов мириться.
Screenshot20211217213906.png72 Кб, 659x419
556 2240327
>>240210

> Так они их и не собирались реализовывать до момента, когда на них начало комьюнити налегать.


Ты пытаешься меня убедить, что человек, который имеет огромный опыт на плюсах и еще куче всего пишет эту хуйню и приговаривает "Как же хорошо, что нет дженериков, а то хуйня какая-то была бы". И при этом это не рандомный >>240213 с двача, а рокстар, получающий 300к $ в наносекнду в гугле. Нет, я не поверю в это никогда.
557 2240448
>>240327

>Ты пытаешься меня убедить, что человек, который имеет огромный опыт на плюсах и еще куче всего пишет эту хуйню и приговаривает "Как же хорошо, что нет дженериков, а то хуйня какая-то была бы"


Эти люди сделали уебищную систему прокидывания ошибок и всратейший пакетный менеджер, который выглядит более всрато, чем установка *-dev пакетов в пользовательское окружение, а дженерики добавили только когда их активно начало пинать комьюнити. Причем они не придумали ничего лучше, чем сделать квадратные скобки в текущей реализации, хотя такое решение можно было и в нулевых запилить.
558 2240680
Заменитый ESR https://en.wikipedia.org/wiki/Eric_S._Raymond перевёл свой довольно большой проект с питона на go. Вот его предложения по улучшению языка https://gitlab.com/esr/reposurgeon/-/blob/master/GoNotes.adoc
559 2240732
Вышла бета go 1.18 https://go.dev/blog/go1.18beta1 с дженериками https://go.dev/doc/tutorial/generics
sage 560 2240738
>>240732
Ого нахуй
5245857.jpg165 Кб, 1200x900
561 2240884
Аноны, вкатываюсь в Golang с нуля.

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

Что это и для чего? Гуглил объяснения, но там всё как-то сложно, как для начинающего.
562 2240960
Бля, как учиться то.
Прошел го тур, разобрался вроде с базовой хуйней, полез смотреть в ютубе как собирают простейший веб сервер.
И началось нахуй. Куча говна, какие то бест практис, чистые архитектуры.
Я просто там нихуя не понимаю
563 2240962
>>240960
Сколько лет коммерческого опыта у тебя на других языках?
564 2240965
>>240962
48 лет
565 2240968
>>240962
Мало, год на петухоне.
566 2241014
>>240884

> для чего нужны руны?


Тип данных, который представляет собой 1 юникод символ, по тому что в 1 байт он, скорее всего, не поместиться.
567 2241039
>>240448

> а дженерики добавили только когда их активно начало пинать комьюнити


Новую методичку подвезли? Сколько раз ты планируешь еще повторять эту мантру? ИТТ уже 2 раза
568 2241057
>>241039
А сколько раз ты планируешь это игнорировать?
569 2242260
image.png50 Кб, 1019x803
570 2243341
Никак не могу с горутинами разобраться.
Нормально ли это писать в один канал с двух горутин?
Если на пике горутины в разных потоках, то почему циклы последовательно выполняются, а не в перемешку?
571 2243375
>>243341
Поставь внутрь горутин Sleep на рандомное время, станут вперемешку
image.png24 Кб, 553x404
572 2243419
>>243375
Все равно нихуя не понял, но хотя бы вижу что две функции запустились в горутинах и работают одновременно
Что вообще по каналам обычно передают серьезные ребята? Я туда пишу просто чтобы горутина не кончилась.
573 2244069
>>240448

>а дженерики добавили только когда их активно начало пинать комьюнити


и прально, нехуй добавлять то, что никому не нужно
574 2244109
>>244069
Зачем ты серьезно ему отвечаешь? Он же сюда посрать пришел, ему плевать на твою рационализацию.
575 2244205
>>244069
Там с момента создания их просили добавить. Может у тебя дефолтные и необязательные параметры не нужны, любитель пилить структуры-конфиги?
576 2244390
>>239521
Вопрос остался без ответа.
577 2244420
>>244390
Понятно.
578 2244626
https://mehdihadeli.github.io/awesome-go-education/ годнота для вкатывальщиков, можно в шапку закинуть
579 2244630
>>244626
Закинешь, когда будешь перекатывать.
580 2245563
>>243419
в го есть всегда 1 горутина это мэйн, горутина это функция которая запускается в отдельном(от потока мейна) потоке(горутине). Фича тут в том что когда ты не обьявляешь горутины, твой код выполняется последовательно. Если ты обьявил горутину то то код перестает быть последовательным, и можно вызывать следующие функции/операторы не дожидаясь работы вызванной горутины.

каналы(как пневматические трубы в офисе чтоб туда пеналы с документами отправлять) создали чтоб был механизм передачи данных между горуинами. в твоем первом пике на 16 строке твоя прога стоит ждет пока канал закроется и можно будет читать из нее, поэтому тебя сначала прокрутился цикол10 строка потом ты послал в канал ИНТ и основная горутина/поток видит это, считывает из канала ИНТ (правда в примере в никуда, такое бывает да), и только потом основной поток/горутина едет дальше.

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

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

вообще это лучше использовать когда тебе надо запускать например ГЕТ запрос по тыщю раз, и чтоб не ждать пока они последовательно выполнятся, каждую запустить в своей горутине, так у тебя будут гет запросы одновременно(почти), и ты не будешь сидеть ждать пока сервак к которому ты обращаешься готовит тебе жисончик ПОСЛЕДОВАТЕЛЬНО

вообще есть реальные потоки системы и процессы, и 1 поток системы != 1 горутина, это важно понять, гоха под капотом имеет менеджер горутин(которые крутит гоха) и потоков(которые дала система) и переключает горутины в потоки по какимто алгоритмам, если будешь крудошлепить то не парься даже.
581 2245568
>>239521
на вскоде пишу, пробовал голанд, но часто колупаю баш скрипты, а в голанде с другими языками чет туго пиздец, но в вс коде надо настраивать настройки, потомучто искаропки там максимально уебищно все сделали
наример на таб там 4 пробела вместо табуляции,
модули/gopath вообще ебано настроены когда ставишь ГОаддон
583 2245579
>>245578 отклеилась ссылка на меседж
>>240884
584 2245619
>>240884
Руна представляет собой один юникодный символ, который на практике может быть от 1 до 4 байт, в случае емодзи, например. Слайс рун занимает больше памяти чем стринга, т.к. utf-8 позволяет чуть-чуть экономить память и не выделять по 4 байта на каждый символ. При работе с юникодными строками учти, что при обращении по индексу стринга ты обращаешься не к символу с заданной позицией, а именно к байту, который как может быть целым символом в случае ASCII. так и куском любого другого символа. Не знаю что тебе еще сказать, ты лучше сам задавай конкретные вопросы.
585 2246081
>>241014
>>245579
>>245619
Понял, благодарю
586 2246398
Пацаны, помогите.
У меня есть апи сервер, на котором нужно запускать дополнительные скрипты по шедулеру.
Мне лучше наговнячить отдельные независимые скрипты и засунуть их в линуксовый кронтаб, или найти какую нибудь имплементацию крона в гохе, и хуярить их в основной программе?
Как бы вы сделали? А то я нюфаг, и мне оба решения кажутся костыльными.
587 2246479
Если это наколенное поделие, которое ты не будешь долго сопровождать на многих инсталляциях, то делай в крон.
Если нет, то я бы сделал свой отдельный планировщик
588 2246480
589 2246528
>>246398
Я бы сделал k8s CronJob, если вы используете кубер, либо просто https://hub.docker.com/r/willfarrell/crontab + docker-compose если нет.
CURRENT_YEAR всё-таки на дворе, нужно жить в контейнерах, а не на хосте.
590 2246530
И тут дело даже не в контейнерах ради контейнеров, а в том, чтобы иметь infrastructure as a code, чтобы потом при любых инфраструктурных манёврах не носиться по офису между разрабами и админами теряя кал, в попытках понять как оно работало до этого
591 2246737
>>246528
Свидетели в контейнерах подъехали, тред спасен
592 2246870
593 2248127
>>246398
я бы сделал простой тайм.слип/тайм.афтер/тайм.тикер, потомушто в 99% случаев похуй что этот крон отработает в полночь или в два часа дня.
594 2248478
Анон, привет
Изучаю го и пилю небольший пет проектик, который состоит из двух частей:
1) Модуль, который умеет следить за определенными событиями и определять когда они наступили
2) Модуль-бот для телеги, через которого можно будет подписываться на эти события.

Была идея сделать их как 2 сервиса, что общаются между собой по grpc. Но сейчас кажется, что это плохая мысль: т.к. придется в каждом модуле делать и сервер, который принимает сообщения, и клиента, который их отправляет.

Имеет ли смысл так делать, или хуйней занимаюсь и так никто в здравом уме не делает?
595 2248501
>>248478

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


Там же кодогенерация

> Имеет ли смысл так делать


Да, но я бы не стал так делать со старта. Просто пиши код модулями так, чтобы в случае необходимости ты мог разделить его на 2 процесса.
Ну и я бы на твоем месте тут добавил очередь с сохранением на диск, чтобы не проёбывать ивенты
596 2249370
Аноны. Я только вкатываюсь. Нужен ваш опытный взгляд.

Почему Hello World выводится только один раз, а не два?
Не понимаю.

Код элементарный же.

https://go.dev/play/p/229ANIj17pR
597 2249381
>>249370
Потому что функция main() вызывается, а f() - нет.
Ты выбрал не тот язык для вката. В Go берут исключительно миддлов из других языков. Их и учи.
598 2249382
>>249370
И попутный вопрос. Расшаренный код через этот сервис имеет срок действия?
599 2249386
>>249381

Но ведь эти две функции одинаковы на первый взгляд.
Можешь объяснить подробнее, если не трудно?

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

Мне нравится golang, я осилю.
Есть опыт написания скриптов на js и php в прошлом.
600 2249395
>>249386
Не одинаковы. Функция с названием "main" - точка входа в программу, и при запуске вызывается сама. О вызове функций с названием "f" нет никаких соглашений, поэтому она и не вызывается, её можно вызвать только самому из функции main или какой-нибудь другой функции, которая вызывается из функции main.
601 2249399
>>249395
Начал догадываться. Благодарю за ответ.
602 2249410
>>249382
Не имеет
603 2251513
>>232337
Прошло 3 недели, а вакансия все еще висит.
Кто-нибудь пробовал туда собеситься? Что спрашивали?
604 2251904
А как ваш го в плане секса разрешения зависимостей? Все модули ставятся исключительно в $GOPATH/mod? Нет никаких вещей, наподобие питонячего венва?
605 2251905
>>251904
Зачем? В GOPATH лежат разные версии одного и того же пакета, в проекте просто импортируешь нужную.
606 2251911
>>240296
Что не так с go modules? Про обработку ошибок спрашивать не буду - примерно представляю, какой ответ меня ждет
607 2251914
>>251911

> Про обработку ошибок спрашивать не буду


Но я всё равно отвечу: THROW TRY CATCH FINALLY
608 2252137
Чёт подзаебало меня писать круды на ларке. Решил потыкать go. Что могу сказать сначала было сложно. Но уже норм, нраица, решаю задачки на лит коде . Особенно нравится строгая типизация, после пыхи прям кайф. Параллельно смотрю курс от mail.ru на курсере. Планирую заполнить пробелы в алгоритмах , докере и тестировании. На праздниках наверное запилю спа на вуе ток пока не определился гин брать или эхо. Но с работой беда, везде нужен опыт а где его брать хз
609 2252269
>>252137

>а где его брать хз


Ну как же, пишешь на пхп годик-другой, параллельно учишь Го, потом просишься в контору, которая переписывает свое помойное легаси с пхп на не менее помойные микросервисы на Го.
610 2252306
>>252137
Придумай себе попыт, я не знаю. CRUDы в любом языке мало отличаются друг от друга. Можешь пет-проект сделать за пару вечеров чтобы проникнуться обработкой ошибок.
611 2252738
Бля, почему всё так сложно у вас нахуй.
Нужно отправить пост запрос с вложенным жсоном, приходится создавать две структуры, вкладывать одну в другую, маршалить запрос, потом так же принимать ответом вложенный жсон, опять так же маршалить во вложенные структуры нахуй.
Нет особо никаких других путей что ли?

как же было ахуенно говнячить на питоне
612 2252746
>>252738
Так и говнячь на питоне. Зачем тебе вообще язык со статической типизацией, если контролировать типы ты не хочешь?
613 2252748
>>252746
Да кабану кто то внушил что го ахуенный для его мелкобизнеса, что хттп сервер искаробки там работает асинхронно и прочую ебалу, сижу вот уже вторую неделю все свое говно переписываю...
614 2254608
>>194497
Ну я с пхп 1 год на битриксе работал и еще год на ларе, плюс запилил за месяц небольшой пет-проектик. Хватит на мидла? Хотя что спрашивать, лучше проверить по собесам.
615 2254755
>>254608
именно
все зависит от компании
где-то будут дрочить тонкостями рантайма и сборщика мусора
где-то алгоритмами
где-то знаниями микросервисов
616 2255163
Норм идти на собес просто из интереса? Устраиваться сейчас не собираюсь, чисто чтобы разведать обстановку и через полгодика уже пойти или не пойти. HR-ы, у вас бы пригорело от такой хуйни?
617 2255171
>>255163
а ты уверен что даже с прибавкой 30-50% решишь не переходить? всегда можно сказать, что мало предложили и ты хочешь прокачаться и попробовать чуть позже.
618 2255178
>>255171
Ну у меня положение пока такое, недавно уволился. Пока решаю все дела и думаю куда идти.
619 2255532
В каком направлении стоит двигаться, если хочу научиться писать бэк на Go, но опыта написания сетевых (да и не только) приложений нет?

С основными структурами данных и какими-то базовыми алгоритмами типа бин. поиска я знаком, но ничего промышленного, кроме как уебищного андроид-приложения из говна и палок, я не делал (пару лет назад ходил в IT школу Самсунга, но разработка под Андроид мне не вкатила).

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

Материалов, рассказывающих с нуля, как взаимодействовать с серверами на Go я, увы, не нашел. Все, что я видел, скорее для людей, которые имели до этого опыт разработки и просто пересаживаются на Go с каким-никаким, но пониманием, как что работает. Есть ли какие-то пути лучше, чем изучать материалы, которые требуют непосредственного написания кода, с условным Питоном (его синтаксис мне знаком), а потом, когда +- буду осознавать, что к чему, пытаться делать все то же самое, но уже с помощью Голанга? Есть, конечно, мнения что, Go как первый язык учить - затея не из лучших, но долбиться с каким-нибудь плюсами/учить Питон не хочется: все-таки, судя по тому, что я почекал, стажерские/джуновские вакансии на Go в ДС существуют, и их не меньше, чем по другим ЯП, а язык кажется перспективным.
620 2255650
>>255532
Напиши пару REST API. Гайдов особенно на ангельском языке более чем достаточно, gin поковыряй.

А так тебе правильно порекомендовали по поводу сетевого приложения. Если начнешь его делать познакомишься с авторизацией (JWT, как пример), БД (изучишь GORM) и так далее.

Плакать что материалов нет --- глупо, т.к. их более чем достаточно. На крайняк в гугле забей "Top pet projects Golang"
621 2255674
да нет почти джуновких вакансий по го

везде нужно знать дохрена - пару-тройку баз данных (sql, nosql, cache), очереди, куб, паттерны микросервисной архитектуры

если вкатываешься, то имеет смысл идти в жаву, питочик или жээсину - там монолиты и реально можно постепенно развиваться
622 2255676
>>255650
Вообще в первую очередь на русском искал, и может я, конечно, поисковиком не умею пользоваться, но условных лекций (как и литературы), где прям с самых основ рассказывают про какой-нибудь HTTP, а потом начинают, разжевывая, что-то писать серверное именно на Go не нашел.

Про REST API - спасибо, ознакомлюсь. Еще вопрос: с >>165418 (OP)

>- Емкий пошаговый гайд с азов до джуна (go tour на максималках): https://www.practical-go-lessons.com/ стоит ознакомиться? Там про HTTP, XML, JSON что-то есть, выглядит как то, что может пригодиться.

623 2255679
>>255676
Ой, кусок вопроса в цитату влез, но надеюсь ясно, о чем я спрашивал
624 2255737
>>255532
Двачую вопрос, я тоже хочу вкатиться в Go, но не обязательно сразу бэк писать. Что на нём ещё можно написать в качестве первого проекта?
625 2255738
>>255737
Больше ничего.
626 2255740
>>255738
Ладно.
627 2255791
>>255532

>стажерские/джуновские вакансии на Go в ДС существуют, и их не меньше, чем по другим ЯП, а язык кажется перспективным



Не, сильно меньше. Как минимум тот же яндекс нанимает кучу С++/Java стажеров. Сбер, тиньк, рсхб устраивают java/js стажировки для студентов. Не говоря уже о всяких галерах и интеграторах, которым нужны джуны и стажеры, которые будут разгребать самые помойные нудные таски, за которые никто не хочет браться.

Из известного мне, гошников к себе на стажировку берет вайлдбериз, озон (правда у них обязательно 40 часов в неделю работать) и яндекс (в очень малых количествах). А, ну еще и авито, правда хз набирают ли они стажеров, плюс там были довольно кабальные условия уровня работать год за 40к.
628 2255806
>>255791

это другое

весь крупняк набирает стажеров/джунов, но туда серьезный отбор - только для крутых студентов/выпускников

с улицы туда не зайти

у меня племянник прошел отборы в тинькофскую школу финтех, рассказывал о задачах по математике и алгоритмам, прошел у них курс по го и сейчас вышел к ним джуном
629 2255817
>>255806
Есть такое, чтобы попасть в тинькофф нужно уметь решать довольно нетривиальные задачи на динамическое программирование и графы. Да и в целом тинек сейчас позиционирует себя как банк-фаанг и зазывают всяких математиков-олимпиадников. Но там и стажировки раз в квартал стартуют, правда я за 6 попыток так и не смог даже до собеседования дойти, лол.

А вообще кроме как крупняк сейчас мало кто может содержать джунов и стажеров. Это считай как бесполезного сотрудника содержать у себя в течение полгода.
630 2255832
Вот, к слову, статистика тинька. Конкурс примерно по 50 человек на место. Удачи вкатиться, хуле.

https://vk.com/topic-123851409_48300564
Вот их задачи и решения, если что. Чтобы получить возможность пройти собеседования, нужно решить 4 задачи и желательно пятую частично.

>>255532
Попробуй вкатиться в wildberries, контора все-таки более паршивая, может хоть туда конкурс поменьше будет.
А так, если ты лоускилльный вкатун, ну то есть не умеешь решать сложные медиумы или харды с литкода (ДП, графы, жадные алгоритмы, всякие рабины-карпы и бойеры-муры для строк, какой-нибудь хитрый бинпоиск) за относительно короткое время, то сейчас только во всякие НИИ, заводы и госы нужно вкатываться, потому что в ДС, не задротя алгоритмы со школьных лет, ты только пососешь в крупных компаниях.
631 2255837
>>255832
Ну там скорей всего семёны какие-нибудь, которым лишь бы куда устроиться.
632 2255840
>>255676

> Вообще в первую очередь на русском искал


Ну тогда твой путь это 1-ass, либо быть вечным мидлом, даже с огромным опытом
633 2255841
>>255737
Можешь k8s оператор написать, но лучше всё-таки типичный бекенд
634 2255843
>>255841
А куб нужно знать при разработке на Go?
635 2255855
>>255843
Для написания операторов или других приблуд для кубера - определенно да, но это уже больше ответственность девопсов.
А для обычного бекенда это скорее "будет плюсом" и мало где реально нужно
636 2255865
>>255855

>мало где реально нужно



почти везде сами разраыбы пишут кубо-конфиги
нужно понимать, как работает куб, как писать деплойменты-стейтфул-сеты-сервисы-ингрес
637 2255866
>>255837
А так везде, на любую стажерскую и джунскую вакансию за неделю прилетает по 300-600 откликов. Как ты будешь отсеивать кандидатов? Понятно, что всякие тестовые дают, контесты, а после еще собеседования по алгоритмам и кишочкам языка, но тем не менее.

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

https://hh.ru/search/vacancy?area=1&fromSearchLine=true&text=Golang+junior
638 2256572
type switch под капотом рефлексию использует?
639 2256825
>>256572
Короткий ответ - нет, там более низкоуровневая unsafe-машинерия
Рефлексия в го инкапсулирована в отдельный пакет, который рантайм го напрямую не импортирует. Вообще компилятор и рантайм почти не используют общедоступные пакеты, вместо этого они используют параллельные имплиементации из internal пакетов. Я так понимаю это из-за 1.х promise of compatibility, который связывает по рукам и ногам
Встречный вопрос - а какая, в общем-то разница? Если ты упрешься в производительность type switch или type assertion тебе вообще и от интерфейсов нужно будет отказаться.
640 2257281
>>256572
Вопрос, мягко говоря, странный. И то и другое - сущности уровня языка и используют одни и те же механизмы.
641 2257515
>>256572
Если тебя беспокоит производительность - пиши бенчмарки
type switch по по производительности почти не отличается от обычного свича
642 2257533
Как на вашем ГОвне вообще искать работу после других языков, если в абсолютно каждой вакансии требуют 2 года коммерческого опыта конкретно на го?
643 2257536
>>257533
Многие хоть и не пишут этого, но готовы рассмотреть и с опытом на других языках.
644 2257539
>>257536
Ну и как ты это себе представляешь, писать в резюме "я на го только хелловорлды борду и интернет магазин писал, опыта нет, зато я мидл в языке x"? Так такое резюме на этапе хрюши в помойку отправится.
645 2257540
>>257539

> Ну и как ты это себе представляешь, писать в резюме "я на го только хелловорлды борду и интернет магазин писал, опыта нет, зато я мидл в языке x"?


Да.

> Так такое резюме на этапе хрюши в помойку отправится.


Нет.
646 2257545
>>257539
Друг, я тебе, возможно, тайну открою, но джуна от миддла отличают не то, как они задрочили подводные камни конкретного языка, а опыт и знание подходов непосредственно к разработке ПО.
647 2257547
>>257545
Да это я понимаю, а хрюши понимают?
>>257540
Если так, то заебись.
648 2257559
>>256825

>Встречный вопрос - а какая, в общем-то разница?


>>257281
>>257515
Меня не производительность беспокоит, я просто хотел разобраться в кишочках гоуленга...
649 2257561
>>257533
Озон вроде бы раньше нанимал на Го людей из других стеков технологий без требований глубокого знания го.

>>257547

>а хрюши понимают


Ну даже если не понимают, какая от этого разница? Ты с пыхи перекатываешься или откуда? Если с пыхи или питона, то можно поискать вакансии, где требуют PHP/Golang или Python/Golang. Могут на такое взять и без коммерческого опыта в Go. Правда не факт, что на работе ты будешь разрабатывать модные молодежные микросервисы, могут заставить ковыряться вилкой в помойном легаси на пыхе.
Screenshot20220106213943.png61 Кб, 617x616
650 2257640
>>257559

> я просто хотел разобраться в кишочках гоуленга...


На эту тему не много контента, лучший выбор это сколнировать репу голенга и читать код рантайма. https://go.dev/src/runtime/iface.go

Но для начала хватит понимания что вообще такое интерфейсное значение (структура с двумя поинтерами, один из которых на рантайм-данные о типе, которые как оказалась (см комментарий на скриншоте) - в нормальных условиях является синглтоном), чтобы понимать, что проверка конкретного типа у интерфейсного значения это относительно не дорогая операция (сравнение двух адресов, т.е. сравнение двух чисел)
651 2257649
>>257547

> а хрюши понимают?


Не важно, что говорят крысы за спиной у кисы
652 2258244
>>255532
тупо иди на собес в авито/вб/озон. если сольют, то проси фидбек. большой шанс, что если тебя сольют, то это будет не из-за хуевого знания гошки/микросервисов. я на похуй без опыта вкатился через стажерство в вайлдбериз, прошел только tour of go до собеса. в резюмехе были базовые знания петона, плюсов, sql и инженерная специальность по радиолокации. на своём опыте вообще не почувствовал никакую трудность вката, о которой тут пишут.
потом эти ягодные пидары сократили, но в другую контору перейти с повышением ЗП уже было максимально просто. всю эту хуйню вроде взаимодействия с серверами и как писать рест апишки за первый месяц выучишь на 95%.
653 2258598
>>235395
давай кулстори. кто это?

И, вообще, как такие проблемы в нормальной команде надо решать?
Пример данных в базе на картинке. Произошло какое-то несоответсвие выдачи. Некто Кульпин отослал решать проблему в группе, которая пишет бэк.
Виноват Кульпин?
654 2258599
>>258244
В каком году это было? Сейчас вб при подаче к ним на стажку просит вертеть деревья и решать задачи уровня яндекса на собесах.
655 2258606
>>258598
Чабинский Паша из вб, не знал что-ли? По какой причине произошел такой диалог, не в курсе, но на дваче и не только это еще год назад обсуждали.

https://www.highload.ru/moscow/2018/authors/1728

https://s30132103300.mirtesen.ru/blog/43718606268/-YA-vas-v-krug-postavlyu-Kak-v-Wildberries-obschayutsya-s-podchi

https://joker.ykt.ru/2021/01/18/kak-v-wildberries-obschayutsya-s-podchinennymi.html
656 2258717
>>258244

>но в другую контору перейти с повышением ЗП уже было максимально просто


В РФ есть нормальные места, где пишут на го, за исключением авито/вб/озона? Нормальные - без кучи легаси, с нормальным руководством и без толп вкатунов с заводов на позициях сеньоров.
657 2258967
>>258717
Есть
658 2260233
>>257559
Дело не в производительности, просто вопрос странный сам по себе. Это примерно как спросить "пистолет Макарова под капотом АК-47 использует"?
659 2260239
>>260233
>>257559
Знаю, пример долбанутый - первое, что пришло в голову.
660 2260609
Сел написать hello world на го, мне понравилось, хочу ещё. Я теперь goвноед?
661 2260614
>>260239
Рефлексия - это такой удобный способ использования unsafe'а, когда вместо сигфолта ты получаешь паники.
Приведение к конкретному типу это вообще про другое, хотя и использует под капотом unsafe, как и почти всё в рантайме
662 2260617
>>260609
Говноедом ты станешь, когда тебе понравятся горутины.
663 2261273
Кто работал/работает в Озоне, расскажите, как там, живы ли братья и т. п.
664 2261573
Есть такой странный проект tinygo. Кто-нибудь пробовал?

Так вот, если tinygo ради многопоточности вставляет в каждую строчку await, это все ебово проседает по сравнению с простейшим кодом на обычном ардунском си?
665 2261610
>>261573

там стандартные llvm корутины

простейший код на си всегда будет быстрее

перфоманс на уровне плюсов, там теже таргеты, что и у llvm - только достаточно перфомные микроконтроллеры, так что ничего все будет норм.
666 2261756
>>261610
Дело в том что я еще не знаю что такое стандартные горутины.
Мне нужно оценить перспективу в это ввязываться.
Действительно ли после каждого оператора происходит неявный вызов кода?

Хотел попробовать обрабочик звука сделать.

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

При этом мне просто не нравится Си и все эти исторически сложившиеся таймеры в ембедеде.

Хороша ли идея использовать tinygo ?
667 2261869
>>260617
Но ведь горутины с точки зрения разработки практически ничем от отличаются тредов - те же рейсы, те же дедлоки. Их отличие от обычных тредов больше в производительности, т.к. они являются абстракцией над тредпулом они получаются более легковесными, вот и всё.
Отличительная особенность го это именно каналы как встроенный в язык тип => имеем дефакто стандартный способ общения горутин
668 2262272
>>261756

нет, что микропитон, что тиниго подходят только для энтузиастов "поиграться"

хочешь нормально - пиши на с

хочешь поиграться - бери тиниго, о производительности не парься.
669 2262506
>>261273
моему дружку нравится, бухают по пятницам в офисе, подробнее хз
670 2263482
Что произойдет, если вызвать в горутине продолжительную по времени операцию? Например чтение из большого файла или чтение из сокета, куда данные медленно поступают. Реальный системный поток так или иначе заблокируется, пока не будут считаны все данные, так? И что тогда делают остальные горутины? Ждут, пока занятая долгой операцией горутина закончит свою работу, после чего планировщик на этот поток ставит другую горутину? Разве будет от этого выигрыш в задачах, связанных с IO?
Я думал всегда, что механизм какого-нибудь epoll в этом плане более производительный и удобный.
671 2263522
>>263482
Я так понял, что блокирующий IO вызов в горутине просто отдается в netpoller, где как раз с помощью epoll/kqueue отслеживается состояние IO задачи. А в это время на поток, где ранее была горутина с блокирующим вызовом, помещается другая горутина. В целом умно, хуле скажешь.
Другое дело, что если блокирующую задачу нельзя с помощью epoll/kqueue отслеживать, то пизда всему сущему - системный тред заблокируется, и с этим, похоже, что ничего не поделаешь.

Тогда другой вопрос. Вот эти все обращения к БД, они же через сокеты идут, а значит их можно в netpoll отдать и системный поток не будет блокироваться в ожидании результатов какого-нибудь селект запроса?
672 2263535
>>263522

угу, все так

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

>Тогда другой вопрос. Вот эти все обращения к БД, они же через сокеты идут, а значит их можно в netpoll отдать и системный поток не будет блокироваться в ожидании результатов какого-нибудь селект запроса?



в целом, зависит от драйвера
но в подавляющем количестве случаев драйверы асинхронные, и блокировки не будет
673 2265677
>>263535

кстати, я чуть позже все-таки нашел как оно работает

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

за всеми сисколами следит отдельный тред

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

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

как-то оно так работает
674 2265978
>>165418 (OP)

>- Емкий пошаговый гайд с азов до джуна (go tour на максималках): https://www.practical-go-lessons.com/


ого, это что такое? говно какое-то или норм тема? насколько утверждение про джуна - фантазии ОПа-хуя?
мне не для вката, а так, чисто просто интересно
мимо
675 2266958
>>165418 (OP)

>пункт "Learning Go"


Нет такого пункта. Вопрос, какая должна быть структура каталогов где писать код? Левые стайлгайды говорят, что нужно создать 10+ каталогов, в том числе cmd для бинарников, хотя для них автоматические создается каталог bin.
677 2267118
>>258717

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

либо на забугор, на митера джона

остальные конторы - говно
678 2267164
>>267098
Пасиба!
image.png37 Кб, 490x518
679 2267492
Отвратительная мерзкая параша прямиком из семидесятых вот что такое это ваше говно. Я срал ебал!
680 2267577
Только бездари называют переменные одной буквой.
681 2267629
>>267577
Автодополнение придумали не от хорошей жизни.
682 2267666
>>165418 (OP)

>В обязательном порядке проходим Go Tour: https://tour.golang.org/welcome/1 (есть на Русском)


Нетути на русском
683 2267695
https://go.dev/doc/tutorial/generics
что с ебалом, хкйтеры?
684 2267697
>>267695
Теперь будем продавливать эксепшены.
685 2268197
>>267697

эксепшоны не нужны
нужны option и result типы + немного синтаксического сахара поверх
и будет вообще красота
686 2268296
Что насчёт переката? А то даже у рубистов тред не тонет, а вы тут вообще где-то в параше, только по тегу и находит.
687 2268303
>>268296
Перекати.
688 2268306
>>268296

а зачем?
пока не грохнулся - норм, зато залетных почти нет
689 2268513
>>267577
И errdefer, как в zig
690 2268921
>>268306

>залетных почти нет


так вообще никого нет
691 2268964
>>165418 (OP)
Давайте посмотрим кто из местных сеньюров сможет пройти собес на вкатухскую вакуху джуна говнолэнщика.

1. Чем отличается аутентификация и авторизация?
2. Какие есть модели контроля уровня доступа?
3. Дай определение и область применения SAML. Какие преимущества, недостатки и альтернативы?
4. Как ты понимаешь термин Non-Repudiation?
5. В чём заключается CAP теорема?
6. Опиши алгоритм работы равт протокола.
7. Зачем нужен кворум в распределёных системах? Какие преимущества и недостатки системы работающей без кворума?
8. Назови функции девопса в команде.
9. Чем отличаются end to end тесты от интеграционных?
10. Назови принципы SOLID.
11. Что такое "пахнущий" код? Опиши несколько примеров такого кода
12. Какие отличия sql от nosql баз данных? Когда стоит применять какие базы?
13. Назови ACID принципы.
14. Чем оптимистик лок отличается от писимистик лока?
15. Что такое мастер-слэйв (ридонли) реплика? Чем она отличается от эктив стэндбай реплики?
16. Опиши как работает хэндшейк в TCP.
17. Что такое nagle algorithm?
18. Как при сканировании отличить закрытый TCP порт от защищёного фаерволом?
19. В чём разница хтпп первой и второй версии?
20. Какие бывают атрибуты у кук?
21. Какой хейдер ставит вебсервер при проксировании запроса?
22. Опиши когда применяют post-mortem, ретроспективу и root cause analysis?
23. Для чего в гите blame, cherry pick и bisect?
24. В чём разница ручного, полуручного и автоматического пайплайна? Когда какой стоит использовать?
25. Чем отличается фабрика от абстрактной фабрики?

Ну и хватит. Кто тут пройдёт собес на джуна?
691 2268964
>>165418 (OP)
Давайте посмотрим кто из местных сеньюров сможет пройти собес на вкатухскую вакуху джуна говнолэнщика.

1. Чем отличается аутентификация и авторизация?
2. Какие есть модели контроля уровня доступа?
3. Дай определение и область применения SAML. Какие преимущества, недостатки и альтернативы?
4. Как ты понимаешь термин Non-Repudiation?
5. В чём заключается CAP теорема?
6. Опиши алгоритм работы равт протокола.
7. Зачем нужен кворум в распределёных системах? Какие преимущества и недостатки системы работающей без кворума?
8. Назови функции девопса в команде.
9. Чем отличаются end to end тесты от интеграционных?
10. Назови принципы SOLID.
11. Что такое "пахнущий" код? Опиши несколько примеров такого кода
12. Какие отличия sql от nosql баз данных? Когда стоит применять какие базы?
13. Назови ACID принципы.
14. Чем оптимистик лок отличается от писимистик лока?
15. Что такое мастер-слэйв (ридонли) реплика? Чем она отличается от эктив стэндбай реплики?
16. Опиши как работает хэндшейк в TCP.
17. Что такое nagle algorithm?
18. Как при сканировании отличить закрытый TCP порт от защищёного фаерволом?
19. В чём разница хтпп первой и второй версии?
20. Какие бывают атрибуты у кук?
21. Какой хейдер ставит вебсервер при проксировании запроса?
22. Опиши когда применяют post-mortem, ретроспективу и root cause analysis?
23. Для чего в гите blame, cherry pick и bisect?
24. В чём разница ручного, полуручного и автоматического пайплайна? Когда какой стоит использовать?
25. Чем отличается фабрика от абстрактной фабрики?

Ну и хватит. Кто тут пройдёт собес на джуна?
692 2269250
>>268964

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

лично я не знаю ответов на

>3. Дай определение и область применения SAML


это что-то на энтерпрайзном, у нас вго такое не любят

> 17. Что такое nagle algorithm?


> 18. Как при сканировании отличить закрытый TCP порт от защищёного фаерволом?



это что-то что обычному программисту не нужно
693 2269373
>>267666
Там есть инструкция как локально развернуть, там был русек, но очень васянский - с КАРТОЙ вместо map хорошо хоть слайс не перевели как нарезку
694 2269389
Решил попробовать ваше Goвно после нормального языка. И сразу вопрос. Почему JSON разбирается независимо от регистра ключей? Вам там делать нехуй?
695 2269404
>>269389
Пиздец, и эту фичу даже выключить нельзя.
696 2269407
>>269389
Лол, после if err != nil у тебя ещё остались вопросы, а не только желание выбросить этот калл и вымыть руки?
697 2269427
>>269389
Нихуя тебя не понял.

>JSON разбирается


Что это значит? Скинь пример на го плейграунд

> независимо от регистра ключей?


Ключей в json-объекте, го мапе, полях структуры?

> Вам там делать нехуй?


if thingsToDelat == nil {
return nil, errors.New("da, nam norm")
}
698 2269585
>>269407
Мне надо написать небольшую кроссплатформенную хуйню, показалось, что Go подходящий инструмент. Но уже всё понял.
699 2269594
>>269427
Что тебе не понятно? Берём любую программу на Go, работающую с JSON вида {"Hui":"pizda"} и страктом Hui. Начинаем ей кормить JSON вида {"Hui":"pizda","HUI":"anus"}. Программа берёт HUI несмотря на регистр и ебётся в anus. As expected?
700 2269671
>>269594
Ты даже пщ не осилил, куда тебе до джсона...
https://go.dev/play/p/CC0GhEphC9j
701 2269704
>>269671

> Ты даже пщ не осилил, куда тебе до джсона...


В голос

>>269594
Без твоего кода нельзя сказать точно, но ты, скорее всего, проебался на том, что не прочитал документацию по json пакету, где сказано, что чтобы маршалить го структуры в json объекты или анмаршалить наоборот - тебе нужно чтобы все интересующие тебя в этом плане поля были экспортируемыми, т.е. с большой буквы. по тому что пакет рефлексии, который пакет json использует для работы искусственно ограничивает работу с приватными полями. Если очень надо - юзай unsafe
Если у тебя в json объекте ключи с маленькой буквы - тебе нужно использовать специальные struct tags.
Как, например, тут https://go.dev/play/p/-wWcGgp4hbe
Пройди, блядь, ебучий тур по го, он охуенный
702 2269726
Сусланы, вбросьте какой-нибудь годный таториал по вёрстке production grade CRUD'ов. Перекатываюсь сейчас с долгих лет фронтенда в джуниор Го. Кодать как — разобрался, делать нетривиальные рест сервисы — тоже. Но всё это учебные проекты. А как сделать буллет пруф продакшон грейд рест эйпиай энд сак сам дик чёт пока не разобрался. Может быть есть какой-то гайд что надо реализовать чтобы приложение было годным и его не стыдно было показывать на собесе прожжённым гоферам? Я пока на вскидку сделал всё чтобы 12 factor app'у соответствовать тяжело идёт обучение без ежедневного код ревью как привык, но не покидает ощущение что этого мало.
703 2269730
>>269726

https://threedots.tech/series/modern-business-software-in-go/

там много о clean architecture + ddd + как писать на гошке
16269680871300.png404 Кб, 1300x1300
706 2269843
>>269751
Ну а вот в этот пример го не может...

>To unmarshal JSON into a struct, Unmarshal matches incoming object keys to the keys used by Marshal (either the struct field name or its tag), preferring an exact match but also accepting a case-insensitive match. By default, object keys which don't have a corresponding struct field are ignored (see Decoder.DisallowUnknownFields for an alternative).



Засим отправляю вас к https://github.com/mailru/easyjson
707 2270791
>>269726

>буллет пруф продакшон грейд рест эйпиай


в компаниях по-разному. где-то десятки пакетов по 30 строк кода и мемы про чистую архитектуру и DDD, где-то https://medium.com/@matryer/how-i-write-go-http-services-after-seven-years-37c208122831 все роуты в одном пакете и сотни строк в каждом пакете - норм. на джуна в обоих случаях должен пройти, если собеседующие не ебаны. если и ты, и собеседующие не ебаны, то у тебя вообще тестовых заданий быть не должно и в первые недели ты будешь поставлен на колени делать код как в остальных проектах команды. единственное что я блять увидел за 3 места работы это то что все имеют пакет с модельками названный models
708 2272015
>>268306
И тут го перенимает традиции жавы.
Как думаете, через 10-15 лет станет ли го второй жабой в плане легасе?
709 2272019
>>272015
Почему именно жабы? Половину языковых тредов перекатывают после 1000 под тем же предлогом.
710 2272106
Как вы смирились с тем, что для обозначения приватных членов используется запись имени с нижнего регистра? Это же хуже даже чем m_*, почему нельзя было добавить модификатор, как static из C или private из ООП языков? Зачем уродовать код? Использовать lowerCamelCase, когда во всем коде используется CamelCase. Вкусовщина, но я не понимаю.
711 2272108
>>272106
В дополнение, как вы смирились с ограничением количества слов в названии пакетов до одного? Это же не дает вообще никакого понимания откуда этот пакет, что он делает, может быть вообще это другой пакет, а не который вы ожидаете. И вы это не поймете пока не посмотрите на импорт или на сам пакет.
712 2272109
>>272106
>>272108
И еще, вам серьезно нравится указывать в импортах ссылки на гитхаб? Почему в Go не завезли менеджер пакетов? Как у того же питона? Почему я не могу создавать проекты в любой директории, в которой хочу? Зачем мне нужен, GOPATH?
713 2272717
>>272109
ты из какого года вылез? два года назад уже всё было когда я устраивался стажером
714 2272726
>>272109
Не забывай обновлять методичку, ты за это деньги получаешь. С пакетами они разобрались, дженерики уже есть в бета-версии, скоро и эксепшены подвезут.
715 2272849
>>272726

да сколько можно

эксепшенов не будет, да и они и не нужны

поверх error норм встанут монады

осталось только добавить синтаксического сахара, что бы уйти от if err!= nil
716 2272850
>>272726

да сколько можно

эксепшенов не будет, да и они и не нужны

поверх error норм встанут монады

осталось только добавить синтаксического сахара, что бы уйти от if err!= nil
717 2272920
>>272108

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


Это не ограничение, это скорее рекомендация. На практике там часто 2 и иногда даже 3. Даже в стандартной либе есть по два слова.
Название пакета это название неймспейса, он не должен быть подробным описанием что это такое и для чего.

> Это же не дает вообще никакого понимания откуда этот пакет


Полный путь импорта более чем достаточно для понимания.
718 2273594
>>272108
если уж нужно, то либо составное слово, либо аббревиатура. но внутри приложения обычно всё понятно. еще в серьезных компаниях автосгенерированный код может и с андерскорами в названии пакетов быть, поэтому в названиях самописных пакетов тоже их используют и не ебут мозги, хоть и неидеоматично. а для публичных либ не должно быть так уж трудно короткие названия придумать. если в твоей либе больше трех пакетов которые нужно импортить, то ты вообще пидор.
>>272106
неиронично одна из лучших фич. делал себе скрипт штобы сишарп в го переписывать так это ебота лишние кейворды приходится стрипать плюс нихуя не понятно какое дополнительное понимание они привносят, кейсинг хотя бы дополнительно виден в точке вызова
719 2275671
Дратути, стоит врываться в Go фанату С++? Посмотрел на ЗП и чет приуныл как Джуны С++ слегка отсасывают.
720 2276246
Блядь, какого хуя нету нормальной документации по Aerospike?
Заебись у них тупа на спйте лежит страница с описание в духе
«Метод получитьСписок - возвращает список»,
Примеров ноль, зато блядь поддержу pred exp выключили сука
721 2276321
>>275671
Нет, в го все еще почти что нет вакансий для джунов или стажеров.
Лучше поработай год-два на пыхе или питоне, а потом в го вкатывайся.
722 2276576
>>276246
Зачем вообще его использовать?
518hujD6CxL.SX430BO1,204,203,200.jpg32 Кб, 432x500
723 2276619
Чет горит от этого GO... Девупс который ничего кроме баша, ямла, и немного груви не умеет в треде.

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

Возникает куча вопросов, по релокации памяти, пустым интерфейсам, алгоритмам итд итп.
Думаю может есть какие-то репетиторы? менторы? Больно во всем этом разбираться самому. Не представляю как в ГО вкатываются с 0 самостоятельно.
724 2276703
>>165418 (OP)
Аноны экс-джависты, можете пояснить почему/зачем вы перекатились на го? Я сам вкатун в пхп и понимаю, что с него придется перекатываться, чтобы начать деньги зарабатывать. Но вам это зачем, чем жаба не устраивала, там же вроде норма платят? Или доебала "корпоративная" культура, или проекты унылые?
725 2276814
>>276703

>доебала "корпоративная" культура, или проекты унылые


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

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

Ну и вообще скилловые джависты уходят в скалу или го обычно, а джава наполняется вкатунами с заводов и бывшими таксистами, уровень коллективов падает ежегодно.
726 2276839
>>267492

> go


> defer


> chan


> select


> мерзкая параша прямиком из семидесятых


Будь это было так, сейчас бы асинхронный код в большинстве случаев не состоял бы из колбеков и async/await'ов
покормил хейтера
727 2276857
>>275671

> стоит врываться в Go фанату С++


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

>>276619

> Возникает куча вопросов


Это нормально, когда изучаешь что-то новое. Задавай гуглу или итт, если последний вариант - желательно выкладывай примеры своего когда на го плейграунд

> Больно во всем этом разбираться самому. Не представляю как в ГО вкатываются с 0 самостоятельно.


Ты еще в раст/плюсы не пытался вкатываться, вот там вообще пиздец. А го один из самых простых языков с точки зрения вката.

> по релокации памяти


Не лезь в кишки без лишней необходимости. Помни про правило 20/80

> пустым интерфейсам


Сейчас уже модно писать any, т.к. это буквально что угодно

> Думаю может есть какие-то репетиторы? менторы?


У меня всегда были сомнения в квалификации людей, которые вместо того чтобы зарабатывать килобаксы в разработке занимаются преподаванием за мелкий прайс. Единственный плюс - в универе можно поёбывать студенток
Но ИТТ все твои друзья, поможем чем сможем.
goapi.jpg251 Кб, 1796x1263
728 2278263
Здравствуйте.
Я изучаю Го как девопс, но запутался совершенно.

Написал простую программу с sql и gorilla/mux :
package main
*db.SQL
..
{
db, err := sql.Open("postgres", connStr)
err = db.Ping() //и все это работает
}

А в другом файле и том же package main я обрабатываю запросики:

err := db.Ping()

и db == nil !

БЛЯДЬ

что вообще тут в Go происходит?
Я прямо охуеваю с этого. Что можно сделать не так в таком простом примере?

Это все по хаутушкам делаю, за исключением небольших своих добавлений.
Из отличий от примитивных программ из инета у меня просто на разные файлы разбито и gorilla/mux .

Думаю, я какую-то детскую ошибку совершил. Может кто угадает какую?
goapi.jpg251 Кб, 1796x1263
728 2278263
Здравствуйте.
Я изучаю Го как девопс, но запутался совершенно.

Написал простую программу с sql и gorilla/mux :
package main
*db.SQL
..
{
db, err := sql.Open("postgres", connStr)
err = db.Ping() //и все это работает
}

А в другом файле и том же package main я обрабатываю запросики:

err := db.Ping()

и db == nil !

БЛЯДЬ

что вообще тут в Go происходит?
Я прямо охуеваю с этого. Что можно сделать не так в таком простом примере?

Это все по хаутушкам делаю, за исключением небольших своих добавлений.
Из отличий от примитивных программ из инета у меня просто на разные файлы разбито и gorilla/mux .

Думаю, я какую-то детскую ошибку совершил. Может кто угадает какую?
729 2278305
>>278263

> Думаю, я какую-то детскую ошибку совершил


Да, скорее всего так и есть. В хендлере db это глобальная переменная, так ведь?

>{


>db, err := sql.Open("postgres", connStr)


>err = db.Ping() //и все это работает


>}


Тут ты создаешь локальную переменную db, область видимости которой ограничена фигурными скобками, не важно при этом это просто блок из фигурных скобок или функция. Создав локальную переменную с именем db ты теряешь возможность обратиться к глобальной переменной db. Подробнее разжевано тут:
https://golang-blog.blogspot.com/2020/05/shadowed-variables-in-golang.html
730 2278386
>>278305

>>db, err := sql.Open("postgres", connStr)


да, ты прав. я тупанул.

А разве компилятор не должен быть обнаружить затенение?
Ужасный язык.
731 2278475
>>278386
Затенение это легально, и иногда нужно. Поэтому ошибки нет
733 2278559
>>278547

> 1990 отзывов

734 2278564
>>278547

> Blockchain Lab


Дальше не читал.
735 2278567
>>278564
Чел, ты собрался работать в помойном озоне и wb у торгашей?
Сейчас вся топовая работа на голанге - это блокчейн...
736 2278591
Эксперты по стекам технологий здесь? Стоит ли перекатываться с жабы в гоуленг в 2х22 году?
738 2278723
>>276814
>>278699
Это сообщение я же и написал, попутно нафантазировав о том, что можно писать свои кривые велосипеды, так как в гоуленге не принято пользоваться фреймворками...
А как в действительности это дело обстоит?
739 2278756
>>276619
С нуля туда и не вкатываются, переходят с других ЯПов обычно. Предлагаю тебе сначала базовый Си изучить.
740 2278817
>>278723
Я не писал на джаве, по этому мне сложно сравнивать.

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


Ты так говоришь, словно в го вместо веб-сервера голый TCP-сокет и вокруг него нужно написать свой веб-сервер.
Или что каждый день гоферы сидят и свои велосипедные недо-фреймворки пишут под каждый проект.
Я на го работал на 2-х проектах, и в каждом была запилена очень тонкая абстракция над стандартным http + внешним роутером, и больше никто ничего не дополнял годами.
Я только однажды добавил сервить embedded files
А большую часть времени что так, что эдак - ты всё равно пилишь бизнес-логику.
А то что в го не принято использовать фреймворки значит приблизительно тоже самое, что и когда говорят что react.js это не фреймворк - что мы вместо одной жирной зависимости которая умеет вообще всё импортируем десяток узкоспециализированных зависимостей по необходимости. DI отдельно, генерация документации отдильно, ORM/драйверы бд - отдельно.
741 2278820
>>278817
Я только однажды добавил возможность сервить embedded files
быстрофикс
742 2279093
https://www.youtube.com/watch?v=yyUHQIec83I
Ваше мнение об ЭТОМ? Индуска нагло зарабатывает на еду, впаривая базу под видом курса? или годный контент?
743 2279211
>>279093
Видеоконтент это в 99% случаев хуита для слабоумных, по тому что нет других причин смотреть 30 минут видео вместо того, чтобы прочитать этот материал тестом минут за 7-10
744 2279479
>>279211
Ну так текстом слишком сухо для слабоумных, а тут подача и итеративный пример. Хотя в целом согласен.
745 2279676
Хорошая ли идея валироровать Json'ны с помощью validator v10?
746 2279741
На чем быстрее будет работать круд с рест апи и почему - на го или на пхп? Догадываюсь, что на го. И ещё - его же можно будет просто на сокет повесить через tcp порт? И будет ли при этом какой-то выигрыш у http?
747 2279751
>>279741

> На чем быстрее будет работать круд с рест апи и почему - на го или на пхп? Догадываюсь, что на го.


Если это действительно круд, Go будет незначительно быстрее.

> И ещё - его же можно будет просто на сокет повесить через tcp порт? И будет ли при этом какой-то выигрыш у http?


Это как? Невозможно, конечно. Рест гвоздями прибит к http, который работает поверх tcp.
748 2279887
>>279741
Смотря что ты поднимаешь под CRUD.
Если то что ты обычно пишешь на php - нет.

Правильный бекенд на Go делает какую-то логику : проверяет права, отдает "глобальные" данные , накапливает и откладывает обновления в базу.
В этом случае, конечно на Go быстрее даже для мелкого бизнеса.
749 2280223
>>279751

> Это как? Невозможно, конечно. Рест гвоздями прибит к http, который работает поверх tcp.


Точно, забыл про это. Ну а если не именно rest юзать, а что-то другое? Типа какой-нибудь бинарный протокол юзануть или тот же grpc?

Задача простейшая, уровня "принять джысон - отдать джысон", прочитать/записать данные из базы. Авторизация будет через OAuth. Желательно прикрутить сваггер.

>>279887

> Смотря что ты поднимаешь под CRUD.


Описал выше.

> Если то что ты обычно пишешь на php - нет.


Блин, откуда столько пафоса, пчел? Откуда ты знаешь, что я там обычно пишу на пхп?

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

> type customError uint



что конкретно делает? Создает алиас для uint но с кастомным именем, правильно понимаю?

Типа, uint(i) == customError(i)?
751 2280260
>>280231
Нет, то что ты описал делает конструкция

> type customError = uint


А твоя же конструкция создает отдельный тип, который основан на базовом типе uint, но уже имеют другой набор методов, по этому имлементит другой набор интерфейсов.
752 2280267
>>280260
Спасибо. А что значит "основан на базовом типе"? При инициализации переменной принимает значения этого типа?
753 2280268
>>280267
А хотя чего это я. Пойду доку открою
ba31943fc5795429b055f2c9f17afc10.png1,4 Мб, 3777x1473
754 2280292
>>280223

> я пытаюсь понять, на сколько конкретно


Если тебе действительно важно увидеть конкретные цифры на конкретном железе в конкретном окружении - тебе только бенчмарк поможет.
Если же речь "на сколько оно будет быстрее? Так, примерно, можешь почувствовать?" - в теории у тебя 99.98% времени будет занимать работа с сетью и диском и разницу ты почувствуешь только на очень большом скейле.
755 2280299
>>280267
Это значит что оно в памяти лежит лежит одинаково и можно его кастить из одного типа в другой. Ну и да, при инициализации оно имеет одинаковое zero value
>>280268
Это называется underlying type, ищи по этому термину
15489412812352.jpg162 Кб, 840x825
756 2280333
>>280299
Спасибо!
757 2280672
>>280292
Ну да, я же и собираюсь сделать бенчмарк.
Какой скейл считается очень большим? 1-10 миллионов записей за раз?
И ещё я понял, что существует очень большой выбор веб-фреймворков и прочего, сейчас выписываю в отдельный файлик все эти проекты.
Вот уже какой список:
https://github.com/labstack/echo
https://github.com/gin-gonic/gin
https://github.com/gofiber/fiber

Ну и net/http, конечно.
758 2280782
>>280672
Классика для го это net/http + gorilla mux, это сочетание отражает производительность усредненного бекенда на го.

Но максимальную производительность ты выжмешь только на https://github.com/valyala/fasthttp + нестандартные json либы, которые не используют рефлексию

> Какой скейл считается очень большим? 1-10 миллионов записей за раз?


Тут зависит от железа же. Я бы в твоем случае арендовал за 5-15$ виртуалку и посмотрел сколько максимум реквестов в секунду можно выжать на этом железе при около-нулевом количестве 500-х ответов.
Потом можно будет еще с настройками ОС поиграться, если еще желание останется.
759 2280939
>>280223

>Блин, откуда столько пафоса, пчел? Откуда ты знаешь, что я там обычно пишу на пхп?



Может быть потому что я писал и на php и на go ?

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

Главное отличие всех бекэнд-решений не на php - глобальная инициализация и достигаемое этим качественно иная производительность. Это почти всегда лучше php.
760 2280946
Расскажите мне лучше, вот есть Язык. Но где Фреймворк?

Что скрывает Google?
Что известно об их способе использования Go?
761 2280954
И еще один вопрос:
что произошло с библиотекой tensorflow ? Почему ее для Go больше не поддерживают? В книжках еще можно найти примеры использования, но сейчас как будто все закрылось.

Каков современный способ доведения до продашкшона ML-приложений по обработке каких-нибудь картиночек? Неужели в питон через веб-апи пихают?
762 2280991
>>280946

а накуя? это не го вей

net/http более чем достаточно для всего
для чуть большего удобства есть фреймворки - тонкие надсстройки на роутером

усё
остальное от лукавого

(ну ладно, в некоторых обстоятельства net/http можно заменить на fasthttp - чувак невероятно крутую работу проделал)
763 2280997
>>280991
вопрос не в том, что есть "го-вей".

вопрос, ПОЧЕМУ так сложилось? Какие идеи у Пайка с его бандой? Что ожидать в будущем?

В конечном счете, вопрос, стоит ли МНЕ изучать Go, но на этот вопрос никто из вас не даст ответа. Поэтому нужно понять откуда это все пришло и куда придет.
764 2281006
>>280997

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

точка

за это опытные программисты и любят гошку
765 2281008
>>280939

> Может быть потому что я писал и на php и на go ?


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


На пыхе есть асинхронные фреймворки, Swoole, ReactPHP и ещё там что-то.

> глобальная инициализация


Что ты под этим понимаешь? Давай поподробнее.
766 2281024
>>281008
типичная ситуаци>>281008

>На пыхе есть асинхронные фреймворки, Swoole, ReactPHP и ещё там что-то.


И их никто не использует. Нет культуры написания непрерывно работающих приложений.

>> глобальная инициализация


>Что ты под этим понимаешь? Давай поподробнее.


Смотрю, ты настоящий пхпшник.

По этим я понимаю все варианты переиспользования результатов работы любого кода. Глобальные переменные хранящие все что угодно - кеш курс доллара, права админа, токены-хуекины, словарь спам-слов.
767 2281026
>>281024

> И их никто не использует. Нет культуры написания непрерывно работающих приложений.


Это да, согласен.

> >> глобальная инициализация


> >Что ты под этим понимаешь? Давай поподробнее.


> Смотрю, ты настоящий пхпшник.


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


А тут какой-то бред пошёл. $GLOBALS тебе на что?
Кеш обычно в редисе держат.
Что ты там разрабатывал-то на пыхе, персональные хоумпаги?
768 2281041
>>280997
Потому что проще и легче использовать несколько мелких библиотек, чем один огромный помойный легасный фреймворк по типу asp.net или spring.
769 2281047
>>281041
Какие фреймы в го считаются огромно-легасными, чтобы не запомоиться?
770 2281073
>>281047

beego, gorm
771 2281077
>>281073
Спасибо, буду учить.
772 2281086
>>281026
Ох, не хочу продолжать дискутировать с пришибленным пхп человеком.
Просто изучи как тут все работает, а потом поймешь почему так быстро.

Вопрос лишь в том, готов ли ты и твой кабанчик эту эффективность оплачивать.
773 2281088
>>281026
Пафосный тон просто необходим чтобы ты осознал насколько все хуево.
774 2281234
>>281006

>просто, понятно, быстро и без магии


>JSON разбирается независимо от регистра ключей

775 2281424
>>281041
но ведь если все используют один и тот же фреймворк, то ты просто можешь нанимать программистов с улицы. или перекидывать между проектами не тратя время на адаптацию ( как в Google) .

(((Они)) что-то скрывают.
776 2281461
Аноны подскажите ньюфагу, плез.
Собираюсь перекладывать данные из 1 сервиса в другой. Первый сервис это Opensearch (elasticsearch) отдающий документы в json'ах.
У программы (перекладывателя) будет файловый конфиг, в котором я напишу как и в какие индексы opensearch сходить и какие поля документов мне интересны.
Проблема в том, что я не могу в момент конпеляции задать статически типы структур интересующих меня полей документов, чтобы натянуть на них получаемые по http json'ы, потому что в момент момент конпеляции они еще не известны. И станут известны только в момент выполнения, чтения конфига.
В какую сторону копать?
777 2281495
>>281461
Похоже мне надо что-то типо вот этого https://go.dev/play/p/yFDL7d-yVDO
778 2281866
>>281424
Ты перекурил, по ходу, заговоры мерещатся. Тебе же уже сказали, что в го должно быть везде всё просто.
Я вот в сторону echo сильно посмотриваю, как вкатун. Очень уж сильно просто там всё. Есть подводные?
779 2281922
>>281866

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

лично мне fiber нравится
780 2282030
https://pastebin.com/LQRzCZqh

Почему я не могу делать foo.Execute(MoveLeft{}), но могу foo.Execute(&MoveLeft{}), если в сигнатуре метода объявлено, что получаем параметр не по ссылке?
781 2282089
>>280946

> Что известно об их способе использования Go?


Монорепы на десятки гб, гора кодогенерации и тестов
Общение между сервисами по grpc
782 2282097
>>280954

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


https://youtu.be/Ib934FGLsCU
https://youtu.be/-fXQN2cbhF8
783 2282132
>>281461
Если тебе буквально нужно переложить json - то тебе и парсить его не нужно, можно просто слайс байт прочитать и передать его в другое место, или даже io.Copy сделать, если возможно. А так да, либо мапа с пустыми интерфесами, либо с https://pkg.go.dev/encoding/json#RawMessage, если нужно какое-кто конкретное значение вытащить.
784 2282156
>>281922
Ну в пыхе например фреймворк - это альфа и омега, всё предоставляет, от ORM до тестов. Широко распространены "макаки одного фреймворка", которые даже не представляют, что можно что-то без фреймворка делать, клепают бесконечные "сайты с админкой на ларавеле", ИЧСХ, даже деньги этим зарабатывают.
785 2282284
>>282156
Так это даже не пхп разработчики, а что-то уровня ларавель- или даже вордпресс-девелоперы. Теперь понятно почему у них горит от го - быть чисто "net/http" девелопером ну уж совсем зашквар какой-то
786 2282304
>>282284
нет, тебе привели аргумент "практика - критерий истины".
давай защищайся!
787 2282318
>>282156
Сайты с админкой на одном фреймворке клепают для жадных кабанов с простыми требованиями, потому что зачем придумывать что-то сложнее, если никакой сложной логики или хайлоада не будет. Для нормальной макаки не составит никакой сложности переключиться в той же пыхе с ларавеля на голый роутер + http из симфони и взять doctrine вместо богомерзкого eloquent.
788 2282677
А кто знает как в gorm комментарий для таблицы задать?
Заебись тут ИМПЕДАНС. Поля комментировать можно, а таблицу нет?
Интернет весь перерыл
789 2282679
>>282677
Пиши SQL-скрипт, сука.
790 2282689
>>282679
Я не хочу. Это учебный проект.
791 2282940
>>282689
Ты так ничему не научишься.
792 2282995
>>282940
Это учебный проект, чтобы научиться работать с GORM.

Не знаешь - помолчи.
govscode.jpg70 Кб, 1295x800
793 2283843
Решил немного продвинуться дальше и раскидать код по модулям по этому туториалу:
https://go.dev/doc/tutorial/call-module-code
(Да, мне непривычно размещать проект на гитхабе я че-то не врубаюсь как тут у вас принято, но туториал не выглядит плохим )

Все заработало, я могу сделать и go build и go run .

Но что все не нравится vscode ? Решительно невозможно так работать!
Как укротить vscode ?
794 2283962
>>282995

а нах это говно учить?
795 2284148
>>283843
Что у тебя в go.mod написано? У тебя пути к проектным пакетам должны начинаться с того, что у тебя в "module" написано.
796 2284149
>>165418 (OP)
https://yourbasic.org/golang/
Следующему ОПу - добавьте в шапку
797 2284156
>>284149
Ты следующий ОП и обязан перекатить тред.
798 2284319
>>284148
в точности то, что в этой ебнутой ссылке, которую я нагуглил.
в go.mod написано : replace example.com/greetings => ../greetings

в общем, я перетасовал файлы и завелось. а с vscode что-то не то.
799 2284526
>>283962
Наверное на галере с него это говно требуют.
800 2284572
>>283962
Надо.
а SQL я выучил 20 лет назад.
изображение.png20 Кб, 591x91
801 2284917
Аноны, а такой вызов методов можно как-то сократить?
802 2284933
>>284917
Можно было бы в массив массивов запихнуть правила замены, и по ним в цикле пройтись с реплейсом, но это если правил много, а не три.
803 2284940
>>284933
Понял. Выглядит как говнокод конечно...
804 2284986
>>284917

https://go.dev/play/p/-liM2PhUGEE

но всякие цепочки вызовов выглядят как говно
в жыэсах я наелся такого
805 2285023
>>284917
В данном случае можно воспользоваться https://pkg.go.dev/strings#Replacer, он еще и по аллокациям будет эффективнее
806 2285568
>>285023
Спасибо. Если честно, дико выглядит сигнатура метода, где правила замены ты последовательно передаешь в фабрику через запятую. Почему бы мапой не передать?
807 2285768
>>285568
Питоновских kwargs не завезли, по этому используем *args. А другого сахара у меня для вас нет. А через мапу - так это вообще никакого сахара не будет тогда, куча лишних символов появляется
808 2285821
Пилю свою либу, просто для развлечения и вот назрел вопрос. Что для вас хуже, или от чего больше воняет: копипаста в соурс коде, или ебанутое нагромождение абстракций?
809 2285885
>>285768
В Go вообще сахара нет. Могли бы хотя бы эти if err != nil завернуть во что-то приличное.
810 2285971
>>285885
Сегодня ты обрабатываешь ошибки через try/catch, а завтра родину продашь.
812 2287496
>>286752
Спасибо тебе, добрый человек.
Тред утонул или удален.
Это копия, сохраненная 7 июля 2022 года.

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

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