Go — относительно молодой, но популярный язык программирования. По данным опроса Stack Overflow, именно Golang получил третье место в рейтинге языков программирования, которые хотели бы освоить разработчики. В этой статье мы попробуем разобраться в причинах популярности Go, а также посмотрим, где этот язык используется и почему его вообще стоит изучать.
Немного истории
Язык программирования Go был создан компанией Google. Собственно, его полное название Golang — производное от «Google language». Несмотря на то, что в анонсе язык был назван молодым, в этом году ему исполняется уже десять лет.
Цель, которая стояла перед создателями Go — разработать простой и эффективный язык программирования, который мог бы использоваться для создания качественного программного обеспечения. Роб Пайк, один из создателей Go, заявил, что Go разрабатывался для программистов компании, которые относительно недавно закончили учиться и знают Java, C, C++ или Python. Go для них — язык, в котором можно быстро разобраться и к которому быстро привыкаешь.
Изначально он был инструментом внутри Google, но с течением времени вышел из недр корпорации и стал достоянием общественности.
Преимущества языка
У Golang есть большое количество плюсов, как известных, так и не очень.
Простота. Собственно, это была основная цель создания языка, и ее удалось достичь. У Go достаточно простой синтаксис (с определенными допущениями), поэтому приложения можно разрабатывать быстрее, чем на некоторых других языках. И здесь есть два интересных момента.
Во-первых, Golang достаточно быстро может изучить полный новичок в программировании — тот, кто не знает вообще ни одного языка и только собирается стать разработчиком. О Go можно сказать, что он почти такой же несложный (относительно, конечно), как PHP или даже Pascal, но такой же мощный, как С++.
Во-вторых, Go может освоить уже «сформировавшийся программист», тот, кто уже знает один или несколько языков. Чаще всего разработчики изучают Go после того, как освоили Python или PHP. Далее некоторые программисты с успехом используют пару Python/Go или PHP/Go.
Большое количество библиотек. Если вам не хватает какой-либо возможности в Go, можно воспользоваться одной из множества библиотек и выполнить требуемую задачу. У Go есть еще одно преимущество — можно без проблем взаимодействовать с библиотеками языка Си. Есть даже мнение, что Go-библиотеки — это обертки для C-библиотек.
Чистота кода. Компилятор Go позволяет держать код «чистым». К примеру, неиспользуемые переменные считаются ошибкой компиляции. В Go решается большая часть проблем форматирования. Это делается, к примеру, при помощи программы gofmt при сохранении или компиляции. Форматирование правится автоматически. Подробнее обо всем этом можно узнать в туториале Effective.
Статическая типизация. Еще одно преимущество Go, благодаря которому снижается вероятность допущения ошибки разработчиком. Да, первые пару дней программист, привыкший к динамической типизации, раздражается при необходимости объявлять тип для каждой переменной и функции, равно, как и для всего остального. Но потом становится понятно, что здесь сплошные плюсы.
GoDoc. Утилита, которая очень сильно упрощает документирование кода. Большим плюсом GoDoc является то, что здесь не используются дополнительные языки вроде JavaDoc, PHPDoc или JSDoc. Утилита использует максимальное количество информации, которую она извлекает из документируемого кода.
Обслуживание кода. Его легко обслуживать именно благодаря простому и лаконичному синтаксису. Все это — наследие Google. Поскольку у корпорации огромное количество кода для различных программных продуктов, а также десятки тысяч разработчиков, которые все это разбирают, то появляется проблема обслуживания. Код должен быть понятен всем, кто над ним работает, хорошо документированным и лаконичным. Все это возможно с Go.
При этом в Golang нет классов (есть структуры, struct), нет поддержки наследования, что значительно упрощает изменение кода. Плюс нет исключений, аннотаций и т.п.
Что можно написать на Go
Практически все, за исключением некоторых моментов (например, разработки, связанные с машинным обучением — здесь больше подходит все же Python с низкоуровневыми оптимизациями на C/C++ и CUDA).
Все остальное можно писать, особенно это актуально в отношении web-сервисов. Кроме того, на Go стоит разрабатывать приложения как для конечного пользователя, так и для разработки демонов, UI, он подходит для кроссплатформенных приложений и сервисов.
Востребованность Golang
С течением времени язык становится все более востребованным. Кроме тех компаний, что присутствуют на картинке выше, с Golang работают Mail.ru Group, Avito, Ozon, Lamoda, BBC, Canonical и другие.
«Мы решили масштабировать бизнес, нам важно построить принципиально новую технологическую платформу, которая обеспечит быстрое развитие продукта. Делаем ставку на Go из-за его скорости и надёжности, а главное — аудитории программистов, которая его использует», — заявили представители Ozon в 2018 году, после того как компания приняла решение перейти на Golang.
Ну а что насчет доходов заработная плата Go-разработчика в прошлом году составила в среднем 60-140 тыс. рублей по данным «Моего Круга». По сравнению с 2017 годом этот показатель увеличился на 8,3%. В 2019 году, скорее всего, рост продолжится, поскольку разработчики Golang нужны очень многим компаниям.
Что дальше?
Останавливаться в развитии Golang точно не будет. Потребность в хороших специалистах, которые знают этот язык, будет только возрастать, так что работу специалисту (начинающему или профи) найти будет несложно. В принципе, это утверждение актуально и сейчас, поскольку на рынке IT наблюдается постоянный дефицит разработчиков.
Go хорош как для начинающих программистов, так и для профи, кто уже знает один или несколько языков программирования. Выучить его или переучиться может практически любой программист.
Статья готовилась совместно с преподавателем курса Golang в GeekBrains Сергеем Кручининым, за что ему огромное спасибо!
Комментарии (67)
Gemorroj
08.04.2019 19:10+1Почему бы не написать о недостатках? Заколебали уже, если честно, писать о Go как о серебряной пуле.
evocatus
08.04.2019 23:30+4Я выучил Go (уже зная C, Python и Lua), начал делать на нём side проект для web и пожалел об этом.
Самый большой недостаток Go — это ad-hoc полиморфизм.
Нафиг, только динамическая типизация или нормальные системы типов (как в F#, например).
К тому же (имхо) нет ниши, в которой Go был бы уникален. Контейнеры? А теперь почитайте что нагородили разработчики Kubernetes — фактически свою систему типов (с generics, да) поверх Go:
In short, Kubernetes has built a type naming & identification scheme and a type registry to store each GVK. It took me a long time to identify (pun intended!) this whole thing in the codebase; after I did, I was amazed and impressed.
The core team replaced a compile-time language feature that was missing (Generics) with their home-built runtime system. And given the tools at their disposal, they did a pretty good job.acmnu
09.04.2019 10:54+2К тому же (имхо) нет ниши, в которой Go был бы уникален.
Не то, чтобы уникален, но GC, CSP и компиляция в бинарник доступна очень для немногих, а именно в таком виде (все сразу и на уровне языка, а не библиотек), так и вообще в единственном экземпляре.
Думаю Go оседлал два тренда: минимизация окружения в рантайм и параллельность с минимальными паузами GC.
ilyapirogov
09.04.2019 18:25Я бы еще записал сюда очень простую кросс-компиляцию. Для одного из своих проектов я выбрал именно Golang, потому что нужно было написать утилитку для одного очень специфичного устройства на андроидолинуксе, где не то что Python или Perl, даже Bash не было.
GOARCH=arm GOOS=linux go build
Копируем бинарник через telnet и все работает.
tendium
09.04.2019 18:56Я его выбрал из-за того, что в продакшн у нас шла лишь одна бинарка: в scratch image докера добавлялась бинарка и потом всё шло в кубернетес. Очень удобно. Разбер образа составлял ~12 МБ В случае с ПХП и Руби, всё было несколько сложнее (ну и размер посложнее). На гоу оказалось очень быстро и эффективно писать различные микросервисы в качестве посредника между внутренней кухней и фронтендом, а также демоны для работы с очередями, и просто микроутилитки. Я бы взвесил все за и против, если бы нужно было писать что-то увесистое, но в случае с микрослужбами в прямом смысле первой части слова — «микро», я ни разу не пожалел, что сделал такой выбор.
Gorthauer87
08.04.2019 19:13А что сказать то хотели?
OnYourLips
09.04.2019 08:49+1СтатьяМатериал выглядит, как переваренное (с соответствующим качеством) околоайтишным копирайтером введение к не очень качественной книге по Go.
Курсы рекламируют.
aPiks
12.04.2019 15:09хотели сказать, чтобы вы шли на курсы программирования в Geekbrains, который принадлежит mail.ru, чтобы потом пойти работать в mail.ru, который переехал на Go по фану, а теперь страдает от недостатка людей, которые знают Go. Поэтому в статье не сказано ничего конкретного, а только — это сделано Гуглом, это быстро, это просто и оно работает. Но нет ни технических деталей, ни недостатков языка, которых тоже немало.
alsoijw
08.04.2019 19:26+9Есть интересные статьи про go: о сборке мусора, об оптимизациях, о том как работают интерфейсы/структуры/… и есть очередная реклама.
ligor
08.04.2019 19:34+1И где там UI? Пока только биндинги.
sergeysy
10.04.2019 11:11в связке html,css, js замечательно работает, лучше всяких QT, C#
worldbeater
10.04.2019 12:10А есть примеры real-world-проектов с кроссплатформенным GUI на GO? Существует реализация реактивных расширений для GO, было бы интересно посмотреть на что-нибудь в связке с ней — а у них в ридми нет ссылок на готовые проекты :(
sergeysy
10.04.2019 12:56Я на работе использую в связке с vue.js и jQuery. Go умеет быть файловым сервером, пишется это в одну строчку. Далее пишется фронт на любом любимом фреймворке, и общение между фронтом и шоу по rest API. Приложения десктопные И такая связка реализуется в продукте быстрее чем на qt, при том что я ни вёрстку, ни веб разработку не умел и всё это с нуля учил в отличие от qt или c# с его winforms или ещё какой фиговиной
qrKot
10.04.2019 20:29Далее пишется фронт на любом любимом фреймворке, и общение между фронтом и шоу по rest API.
Это замечательно, и я вообще не отрицаю, что Go для бека офигенен. Но обещали таки UI…
gudvinr
08.04.2019 20:12+2Для того, чтобы изучать любой язык есть две причины:
- деньги и спрос на рынке труда
- желание изучить этот язык
Остальное — вода
Yeah
08.04.2019 20:43При этом "желание изучить этот язык" проистекает из денег и спроса на рынке труда
Tangeman
08.04.2019 21:23+2Не всегда. Иногда язык выбирается исходя из того как быстрее сделать какой-то проект (или хотя бы прототип). Но в этом случае Go не дает никаких преимуществ, если человек уже знает что-то из C/C++/C#/Java. Если производительность не играет существенной роли, то сюда можно добавить знание любого другого языка.
Правда, есть ещё категория энтузиастов, которые чисто из вредности решают задачи на не очень подходящим для них языке (те самые которые пишут веб-сервера на bash или редакторы текста на postscript) — они вряд-ли интересуются деньгами или спросом на рынке труда.FForth
09.04.2019 05:47А, где посмотреть на редактор на PostScript?
Tangeman
09.04.2019 13:55Боюсь уже не найду, это было больше 10 лет назад. Помню только что автор был какой-то студент из MIT, написал его под ghostscript. Я был впечатлён и поэтому запомнил.
borshak
09.04.2019 19:14Вот здесь есть примеры приложений на PostScript — http://www.anastigmatix.net/postscript/direct.html
mapron
08.04.2019 21:23Может у вас так, но это не значит что у всех так. Сомневаюсь что люди изучают как написать программу на Malborge, потому что на этом языке есть вакансии) Для тех же функциональных языков это может быть «потому что это о*уенно»
да просто посмотрите блог «ненормальное программирование»
BkmzSpb
08.04.2019 21:16+10Рискуя нарваться на минусы, все же попытаюсь разобраться и понять, о чем речь в статье. Со стороны звучит так, будто бы статья должна заинтересовать меня (некоего абстрактного разработчика) и разрекламировать мне
Golang
. Представим на минуту, что я ни разу не видел даже строчки кода наGo
(это близко к правде). Какие у языка преимущества (судя по статье):
1) Простота. Собственно, это была основная цель создания языка, и ее удалось достичь. У Go достаточно простой синтаксис
Верю на слово, но т.к. рядом нет ни строчки кода, мне сравнить не с чем.
2) Большое количество библиотек. Если вам не хватает какой-либо возможности в Go, можно воспользоваться одной из множества библиотек и выполнить требуемую задачу. У Go есть еще одно преимущество — можно без проблем взаимодействовать с библиотеками языка Си. Есть даже мнение, что Go-библиотеки — это обертки для C-библиотек.
Сейчас только ленивый с
C
-библиотеками не взаимодействует. Ладно, запишем в плюс.
3) Чистота кода. Компилятор Go позволяет держать код «чистым».
Игнорируя тот факт, что упомянутая в этом абзаце ссылка — битая, я все-таки не очень понимаю, почему фичей языка являеся форматирование сторонней утилитой? Тогда любая тяжеловесная IDE в нагрузку к энтерпрайз-языку — это тоже "фича" языка? Из текста не ясно, насколько я не прав.
4) Статическая типизация.
Верю, что преимущество, но по сравнению с чем?
5) GoDoc.
Сторонняя утилита. Чем она проще чем аналоги для других стеков? Может пример есть?
6) Обслуживание кода. Его легко обслуживать именно благодаря простому и лаконичному синтаксису.
Я полностью согласен, осталось только увидеть этот "лаконичный" синтаксис в сравнении хоть с чем-то.
7) При этом в Golang нет классов (есть структуры, struct), нет поддержки наследования, что значительно упрощает изменение кода. Плюс нет исключений, аннотаций и т.п.
Окей, а чем это заменяется? Что вместо исключений, например?
8) Что можно написать на Go
Практически все, за исключением некоторых моментов (например, разработки, связанные с машинным обучением — здесь больше подходит все же Python с низкоуровневыми оптимизациями на C/C++ и CUDA).Но у вас же обертки и
C
-библиотеки. С ними действительно можно написать что угодно.
9) Все остальное можно писать, особенно это актуально в отношении web-сервисов. Кроме того, на Go стоит разрабатывать приложения как для конечного пользователя, так и для разработки демонов, UI, он подходит для кроссплатформенных приложений и сервисов.
Ну вот хороший же пример — UI на
Go
. Я, например, не встречал (потому что мало интересовался). Пример приложения или упрощения рутинных задач по сравнения с более сложными языками был бы очень кстати. Но, как говорится, увы.
Я открыл статью, потому что захотел узнать, "Зачем мне учить
Go
", но так и не увидел никакого конкретного примера, почему я должен выкинуть свой древний и бесполезный язык и пересесть наGo
, кроме зарплаты. Зарплаты, динамика которой (согласно данным по ссылке на Мой круг) находится на уровне сC#
иPython
, и катастрофически проигрываетSwift
иObjective-C
. И да, я не нашел в статье ничего по ключевому слову "инфляция", что, с учетом указанной валюты, мягко говоря превращает эту динамику в 0.qrKot
09.04.2019 07:40Справедливости ради, gofmt и godoc — часть базового тулинга языка (до кучи с gotest и т.д.). В остальном вы правы, статья на уровне «я прочитал методичку».
tendium
09.04.2019 11:25UI-не-UI, но для фронтенда таки можно писать на go путём компиляции в WebAssembly: github.com/golang/go/wiki/WebAssembly
ewrokirill
10.04.2019 11:12«Статья готовилась совместно с преподавателем курса Golang в GeekBrains Сергеем Кручининым, за что ему огромное спасибо!»
Ощущение, что написана статья только ради этого.
xState_level80
08.04.2019 22:52+1Из 200+ вакансий не увидел ни одну с node.js/React (2ой по населению город в Греции). Про go уж молчу. Увижу лет через пять наверное… и как обычно будут требовать с 5+ летним опытом
DmitriyTitov
09.04.2019 05:05Не мог бы преподаватель «курса Golang» пояснить мне и некоторым другим прочитавшим статью как сделать UI на Go. Может я чего пропустил, или это просто опечатка?
Вообще как для Mail статья слабовата, для меня была бы ОК, но не для Mail.
alex103
09.04.2019 08:10Мог бы! Вот заплатите денюшек, пройдёте курсы и будет вам счастье.
(ну это мой субъективный вывод от статьи)
mad_nazgul
09.04.2019 11:11-1Тема
сисек«зачем изучать GO» не раскрыта. :-)
Будет, он как одни ЯП от Гугла забыт и заброшен.
Или, например как Ангуляр, переделаны так, что версия 2 будет слабо совместима с версией 1? (Предпосылки к этому есть)qrKot
10.04.2019 08:27(Предпосылки к этому есть)
Что за предпосылки?mad_nazgul
10.04.2019 14:44Как минимум во второй версии будет изменена система модулей.
Добавлены генерики и обработка исключений.
Возможно что-то еще измениться.
В общем будет ка было с Ангуляр.tendium
10.04.2019 19:39Как минимум во второй версии будет изменена система модулей.
Шо опять?! Я только приспособился к go mod («vgo»)… Можно пруф?
Добавлены генерики
Это не совсем и дженерики будут, но это лишь расширение языка, не нарушающее обратную совместимость.
и обработка исключений.
Серьезно? Можно пруф? Введение исключений в язык — это ведь фундаментальное изменение, которое не факт, что комьюнити примет.
qrKot
10.04.2019 20:39Как минимум во второй версии будет изменена система модулей
Ну, собственно go modules есть и работает уже сейчас. Ничего из breaking changes не замечено.
Добавлены генерики
Первый вопрос: вы же внимательно читали, что по поводу дженериков авторы языка говорили. А то есть мнение, что дженерики могут оказаться достаточно специфичными.
Второй вопрос: а что из существующей экосистемы должны сломать дженерики? В чем поломается обратная совместимость?
обработка исключений
Вы это где прочитали? То, что должен появиться некоторый «сахар» для обработки ошибок — да, и не только должен появиться, но уже есть. Опять же ничего не сломалось. А по поводу исключений (специально перепроверил) позиция прежняя: ошибка — это значение, т.е. исключений нет и не предвидится.
Вы, в общем, хотя бы из оригинала golang-blob информацию брать попробуйте, что ли, а не из желтой прессы. Там вам прямо и расскажут: «так, мол, и так, развитие языка идет итеративно, в планах сахар для обработки ошибок, некоторые фичи обобщенного программирования, типа-дженерики, возможно на встроенной кодогенерации, а может что-то другое придумаем, пробуем разные подходы. Модули — можете уже пользоваться, это некоторая итерация чуточку более продвинутого вендоринга. Вторая версия — ну, вероятно, чтобы зафиксировать завершение этапа запланированных расширений синтаксиса, версию после 1.6 переименуем в 2.0. Но это так — поржать, по сути слома совместимости не планируется. Язык будем держать как можно более простым, ничего из того, что в планах, поломать что-то не должно».
Ну, в общем, Go не Swift, ломать что-то не собираются. Собственно, гуглу это не выгодно. У него на Go достаточно большая кодовая база, переписывать никто не хочет.
Eugene-123
09.04.2019 13:09+1Мне не нравится в языке Go их логотип тупого хомяка с выпученными глазами. Это уже создает негативное впечатление и весомую причину для того чтобы отвадить меня от изучения языка.
chesterset
09.04.2019 14:30В таком случае вам больше ничего не мешает начать его изучать:
https://blog.golang.org/go-brand
potan
09.04.2019 13:40-1«Го является таким же мощным, как С++» при его механизмах обобщенного программирования — явная неправда.
ilyapirogov
09.04.2019 19:23+1Внесу немножко позитива :)
Лично мне Golang понравился своим вниманием к мелочам. Каждый преподносимый здесь плюс не тянет на киллер фитчу, будь то:
- Встроенные утилиты godoc, gofmt, go test, go generate, etc
- Установка пакетов из любых git репозиториев
- Распараллеливание одним ключевым словом
- Статическая кросс-компиляция из коробки
- WebAssembly опять же из коробки
- Очень простые и удобные стандартные пакеты, такие как rpc или flag
- И многое других мелочей, что сразу не приходит в голову.
По отдельности здесь нет ничего особенного. Например в других языках есть JavaDoc, PyDoc, LuaDoc и куча разных утилит к ним; Линтеров и форматоров вагон к любому языку — выбирай на вкус. Для кросс-компиляции достаточно банч пакетов через apt/yum/portage поставить, итп.
Но удобоство Golang в том, что: a) все это сразу доступно из коробки, скачал — и можно сразу работать; б) они очень удобные и продуманные; в) благодаря предыдущим пунктам, большинство пакетов используют единый подход, что сокращает зоопарк библиотек и подходов и очень сильно упрощает анализ чужого кода.
Так что в итоге: быстрый вход, быстрая разработка, быстрое развертывание. На мой взгляд, весьма хороший инструмент для всяких ботов, консольных утилит, API и не очень крупных сервисов.
Но если вы уже умеете все это делать на других языках и вам это не доставляет никаких неудобств, то, вероятно, Golang вам не нужен.
skovpen
09.04.2019 19:28При этом в Golang нет классов (есть структуры, struct), нет поддержки наследования, что значительно упрощает изменение кода. Плюс нет исключений, аннотаций и т.п.
А это что, если не наследование?
package main import "fmt" type A struct { x int } func (a *A) SetX(x int) { a.x = x } type B struct { y int A } func (b *B) SetY(y int) { b.y = y } func (b *B) GetResult() int { return b.x * b.y } func main() { f := B{} f.SetX(2) f.SetY(4) fmt.Printf("2*4=%d\n", f.GetResult()) }
tendium
09.04.2019 19:42+1Это весьма условное «наследование». К полю можно получить доступ и так, например:
fmt.Printf("%v\n", f.A.x)
По сути это встраивание полей и методов, связанных со структурой A, в структуру B.skovpen
10.04.2019 13:23как бы всем троим ответить :-)
Можете привести пример наследования на C++, который не реализуется в GO?tendium
10.04.2019 13:33С учетом того, что в Go это не наследование, то любой :) Но если даже считать ваш пример наследованием, то как вы реализуете protected метод или поле?
skovpen
10.04.2019 19:50по сути, в go, если структуры в одном package, то при встраивании, их поля/методы с маленькой буквы — protected, если в разных — private. с большой — в обоих случаях public.
tendium
10.04.2019 20:03Это какое-то жонглирование понятиями. Попробуйте данное дело провернуть с пакетом («библиотекой»). Сможете ли вы пользователям пакета («библиотеки») предоставить protected-методы и поля? И в качестве контрольного выстрела: можете ли вы затем изменить видимость protected на public?
Суммируя, все-таки не стоит, работая с go, мыслить категориями и парадигмами иных языков. Ведя разработку на go, нужно руководствоваться философией go и только ей.skovpen
10.04.2019 20:231. провернуть с «библиотекой» можно только private/public. private/public/protected можно исключительно в своём проекте «жонглировать». изменять видимость нельзя.
2. Полностью согласен.
gudvinr
10.04.2019 20:39+1Как минимум, вы не сможете находясь в области видимости A вызвать функции B:
type A struct { x int } func (a *A) GetX() int { return a.x } func (a *A) Get() int { return a.GetX() } type B struct { y int A } func (b *B) GetX() int { return b.x + 1 } func (b *B) Get() int { return a.Get() + b.y }
Если вызвать b.Get(), то, очевидно, вызовется a.GetX(), а не b.GetX().
В случае с C++ достаточно сделать так:
class A { virtual int GetX(); }
При наследовании свойства родительского типа переходят к дочернему.
При композиции, которая в Go, происходит перекрытие свойств, который вы встраиваете в объект более высокого уровня.
qrKot
10.04.2019 20:52+1Можете привести пример наследования на C++, который не реализуется в GO?
Ну, как бы, любое наследование в C++ будет ярчайшим примером того, что не реализуемо в Go… Нету в Go наследования, только композиция.
С плюсах есть virtual-семантика, например, которая в Go нереализуема в принципе.
Собственно, есть еще «фишка» с конструкторами, которые в C++ вполне наследуются, а в Go отсутствуют, что тоже «накладывает отпечаток». Т.е. «встроенное» поле структуры в Go всегда будет неинициализированным, констрактить вы его будете ручками.
Наследник в C++ скрывает детали реализации родителя, в Go — нет. Вы всегда можете «достучаться» до встроенного типа из «потомка».
Модификаторы доступа и области видимости достаточно чувствительно разнятся. В Go модификаторы доступа — уровня пакета, в плюсах — на уровне класса.
В общем, миллион вещей есть в C++, которые нельзя делать в Go. Это не хорошо и не плохо, это просто иногда нужно, а иногда не очень. Просто смешивать понятия не стоит, разные языки с очень различными парадигмами.
gudvinr
09.04.2019 23:49Композиция — это не наследование. Один из способов применения ООП, но не наследование.
woto
11.04.2019 07:17Скажите, мне одному показалось, что в нём нет инструментов для быстрой обработки XML?
(столкнулся в процессе обучения по туториалам)qrKot
11.04.2019 09:51А что вы подразумеваете под «быстрой обработкой XML»?
Если «анмаршаллить из XML, маршаллить в XML» — есть, и даже в стандартной библиотеке есть.
Если вам SOAP нужен, xsd-схемы и все вот это — тогда да, ничего приличного нет, по большей части из соображений невысокой востребованности, имхо.woto
12.04.2019 02:57Да куда там. Я остановился просто на чтении/парсинге. И кажется ни одного у меня такая же проблема. github.com/golang/go/issues/21823
androidovshchik
Go-Рик… Теперь я видел все, связанное с этим сериалом)