Go стал важным языком в моей личной карьере. Я создал надежный звуковой рекламный сервер и SSP с его помощью, когда был техническим директором в Soundcast. Go делает создание сетей и параллелизм настолько простыми, что это похоже на мошенничество. И все это с действительно хорошей производительностью, идеально подходящей для нашей работы.
В первой части мы представили основы этапа создания программного обеспечения. В этой статье мы сделаем это более актуальным с помощью языка, который занимает особое место в моем сердце. Действительно, хотя основы создания программного обеспечения на разных языках одинаковы, каждая языковая экосистема имеет свои уникальные инструменты и методы.
Без лишних слов, давайте рассмотрим их, уделив особое внимание Го.
Go, разработанный Google, использует уникальный подход к созданию, который подчеркивает простоту и скорость.
Go поставляется с командой сборки. Эта команда компилирует пакеты, указанные в путях импорта, вместе с их зависимостями, но не устанавливает результаты. Он генерирует исполняемый файл.
Пример:
go build main.go
Одной из наиболее полезных функций компилятора Go является возможность удивительно легко выполнять кросс-компиляцию. Все, что вам нужно сделать, это установить переменные среды GOOS и GOARCH для целевых платформ.
Пример:
GOOS=windows GOARCH=amd64 go build main.go
Это создаст исполняемый файл для Windows под архитектурой amd64.
Мод Go появился немного поздно, поскольку он был представлен в Go 1.11, но это встроенная система управления зависимостями. До этого нам приходилось помещать все наши проекты Go в специальный каталог на нашей машине под названием {$GOPATH}. Хотя это работало, мод Go теперь дает нам больше гибкости, и это здорово!
Использование довольно простое, как и все в Go.
Вы можете добавить условную компиляцию, используя теги сборки, но наиболее интересной особенностью, на мой взгляд, является то, что Go автоматически кэширует выходные данные сборки, чтобы ускорить последующие сборки (конечно, при необходимости вы можете очистить кеш).
]Встраивание ресурсов
Если у вас есть статические файлы, которые вы хотите включить в двоичный файл, вы можете использовать директиву //go:embed.
Обнаружение расы
Go великолепен, когда дело доходит до параллелизма. Благодаря системе горутин и каналам связи между ними разработчики могут легко разделить рабочую нагрузку программного обеспечения на разные ядра. Но также легко все испортить и создать «расы».
Гонка данных возникает, когда две горутины одновременно обращаются к одной и той же переменной, и хотя бы один из доступов является записью. Подробности смотрите в модели памяти Go.
Компилятор Go поможет вам их найти!
Используйте флаг гонки для определения условий гонки:
go build -race main.go
Профилирование и оптимизация
Одна из главных вещей, которые мне нравятся в Go, — это его производительность. Этот язык дает хорошие результаты без особых усилий. Но если вы хотите сделать все возможное, экосистема Go также предлагает вам несколько действительно отличных инструментов для измерения производительности и оптимизации кода.
Я не буду вдаваться в подробности, но если вы хотите углубиться в тему, приглашаю вас прочитать этот перл: https://www.practical-go-lessons.com/chap-34-benchmarks
Пользовательские режимы сборки
Иногда вы создаете не программное обеспечение, а, например, плагин или библиотеку. Команда Go вас поддержит. В Go вы можете определить режим сборки, чтобы получить желаемый результат!
Как видите, Go предоставляет множество функций в своем компиляторе и экосистеме, позволяющих разработчикам максимально эффективно использовать технологию Go.
И это все на сегодня. На этой неделе я выпущу еще одну статью, демонстрирующую методы создания TypeScript, так что подпишитесь или подписывайтесь, если хотите не пропустить ее!
А пока удачного программирования!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3