В программировании на Go nil является нулевым значением. Как помните, переменная integer, объявленная без значения, по умолчанию будет равна 0. Пустая строка будет нулевым значением переменной string и так далее. Указатель, который ни на что не указывает, принимает значение nil. Идентификатор nil также обладает нулевым значением для срезов, карт и интерфейсов.
Если мы объявляем переменную типа интерфейса без присваивания, нулевым значением является nil. В нашем примере тип интерфейса и значение являются nil, тогда и переменная i считается равной nil.
Если мы объявляем переменную типа интерфейса без присваивания, нулевым значением является nil. В нашем примере тип интерфейса и значение являются nil, тогда и переменная i считается равной nil.
Перевод статьи, в которой описан процесс разработки системы удалённого мониторинга пациентов (технический стек: Go/Vue), заражённых Covid-19.
https://proglib.io/w/da87faf2
https://proglib.io/w/da87faf2
Хабр
Go, Vue и 3 дня на разработку: система реального времени для мониторинга пациентов
В ноябре 2019 года люди услышали о первых случаях неизвестной смертельно опасной болезни в Китае. Теперь все знают о том, что эта болезнь называется COVID-19. Видимо, эпидемия навсегда изменила тот...
Что выведет программа?
Anonymous Quiz
44%
5
36%
18
11%
Ошибка компиляции
2%
Нет правильного ответа
7%
Посмотреть результаты
В нашей викторине затронута тема вариативных функций в Go, которые в качестве единого аргумента принимает ноль, одно или несколько значений. Хотя вариативные функции используются не так часто, в отдельных случаях они могут сделать ваш код чище и читабельнее.
Срез i передается в вариативную функцию hello() в строке №13. Изменения, внесенные во фрагмент внутри функции, видны вызывающей стороне (5 заменилось на 18, т.к. это нулевое значение среза). Следовательно строка №14 напечатает 18.
Срез i передается в вариативную функцию hello() в строке №13. Изменения, внесенные во фрагмент внутри функции, видны вызывающей стороне (5 заменилось на 18, т.к. это нулевое значение среза). Следовательно строка №14 напечатает 18.
Автор статьи делится шаблонами для написания веб-сервисов на Go: https://proglib.io/w/05683c0e
www.dudley.codes
How I Structure Web Servers in Go
Switching to Go from a decade of C# momentum has been an interesting journey. At times I revel in Go’s simplicity; at other times frustration swells when familiar OOP patterns don’t harmonize in a Go codebase. Fortunately, I’ve stumbled upon some patterns…
Сборка приложений Go для разных операционных систем и архитектур
Используя переменные среды и теги сборки, вы можете контролировать, для какой ОС и архитектуры создается окончательный двоичный файл. С помощью мануала вы научитесь собирать тестовое приложение, которое объединяет строки в путь к файлу, создает и выборочно включает зависимые от платформы фрагменты и собирает двоичные файлы для нескольких ОС и архитектур в своей системе.
https://proglib.io/w/774fa86e
Используя переменные среды и теги сборки, вы можете контролировать, для какой ОС и архитектуры создается окончательный двоичный файл. С помощью мануала вы научитесь собирать тестовое приложение, которое объединяет строки в путь к файлу, создает и выборочно включает зависимые от платформы фрагменты и собирает двоичные файлы для нескольких ОС и архитектур в своей системе.
https://proglib.io/w/774fa86e
Jyotiswarup_Raiturkar_Hands_On_Software_Architecture_with_Golang.pdf
17.5 MB
Hands-On Software Architecture with Golang: Design and architect highly scalable and robust applications using Go (2019)
Автор(ы): Jyotiswarup Raiturkar
Книга предоставляет набор знаний, которые позволят понимать на практике принципы архитектуры программного обеспечения с охватом SOA (сервис-ориентированная архитектура), распределенных систем, систем обмена сообщениями и моделирования баз данных.
Автор книги знакомит читателей с различными архитектурными шаблонами для создания распределенных приложений; показывает процесс переноса приложений, написанных на Java или Python, на язык Go; описывает различные аспекты уровня кода (модульность, дизайн классов и конструкции), специфичные для Golang; представляет основные задачи архитектуры, такие как эффективное управление сложностью, масштабируемостью и надежностью программных систем; показывает практику развертывания архитектуры и планирования миграции приложений с других языков и многое другое.
Автор(ы): Jyotiswarup Raiturkar
Книга предоставляет набор знаний, которые позволят понимать на практике принципы архитектуры программного обеспечения с охватом SOA (сервис-ориентированная архитектура), распределенных систем, систем обмена сообщениями и моделирования баз данных.
Автор книги знакомит читателей с различными архитектурными шаблонами для создания распределенных приложений; показывает процесс переноса приложений, написанных на Java или Python, на язык Go; описывает различные аспекты уровня кода (модульность, дизайн классов и конструкции), специфичные для Golang; представляет основные задачи архитектуры, такие как эффективное управление сложностью, масштабируемостью и надежностью программных систем; показывает практику развертывания архитектуры и планирования миграции приложений с других языков и многое другое.
Автор статьи советует использовать стандартные типы по умолчанию в Go, если у вас нет веских причин не делать этого: https://proglib.io/w/c02fdf66
🔝 Топовый Вечный! По смехотворной цене! 🔝
8 ГБ RAM / 4x4.5 ГГц CPU / 80 ГБ NVMe / 500 Мбит/сек / anti-DDoS
Размещение в лучшем московском дата-центре Datapro, подключение к каналу 500 Мбит/сек, выделенный IPv4 адрес, защита от DDoS.
🔥Спешите узнать подробней и заказать
https://proglib.io/w/2b9d6955
8 ГБ RAM / 4x4.5 ГГц CPU / 80 ГБ NVMe / 500 Мбит/сек / anti-DDoS
Размещение в лучшем московском дата-центре Datapro, подключение к каналу 500 Мбит/сек, выделенный IPv4 адрес, защита от DDoS.
🔥Спешите узнать подробней и заказать
https://proglib.io/w/2b9d6955
Пакет flag в Go
С помощью небольшого мануала вы научитесь использовать пакет flag для создания различных утилит командной строки. Кроме того, в нем показана практика применения пакета flag для управления выводом программы, а также рассказано, как реализовывать подкоманды и вводить позиционные аргументы, в которых можно смешивать флаги и другие данные.
https://proglib.io/w/f5a50a26
С помощью небольшого мануала вы научитесь использовать пакет flag для создания различных утилит командной строки. Кроме того, в нем показана практика применения пакета flag для управления выводом программы, а также рассказано, как реализовывать подкоманды и вводить позиционные аргументы, в которых можно смешивать флаги и другие данные.
https://proglib.io/w/f5a50a26
💫 Инструментирование в Go
Рассказываем о методах инструментирования Go-кода, контекстной трассировке и специальном средстве лаконичного и гибкого инструментирования gtrace.
https://proglib.io/sh/l15apnJB4W
Рассказываем о методах инструментирования Go-кода, контекстной трассировке и специальном средстве лаконичного и гибкого инструментирования gtrace.
https://proglib.io/sh/l15apnJB4W
Инструментирование программ на Go чистым и гибким способом: https://proglib.io/w/bbaa1873
Что выведет программа?
Anonymous Quiz
6%
2 и 2
11%
9 и 100
45%
9 и 16
14%
Ошибка компиляции
14%
Нет правильного ответа
10%
Посмотреть результаты
В примере затронута тема анонимных функций, которые отличаются от обычных тем, что они могут определяться внутри других функций и иметь доступ к контексту выполнения, а также этим функциям не назначается имя.
Анонимные функции позволяют нам определить некоторое действие непосредственно там, где оно применяется. Например, нам надо выполнить сложение двух чисел, но больше нигде это действие в программе не нужно.
Анонимные функции могут использоваться как аргумент функции или как результат функции, а также они имеют доступ к окружению, в котором вызываются. Такая ситуация и рассматривается в примере.
Функция
Таким образом, мы можем зафисировать у внешней функции
Анонимные функции позволяют нам определить некоторое действие непосредственно там, где оно применяется. Например, нам надо выполнить сложение двух чисел, но больше нигде это действие в программе не нужно.
Анонимные функции могут использоваться как аргумент функции или как результат функции, а также они имеют доступ к окружению, в котором вызываются. Такая ситуация и рассматривается в примере.
Функция
square
определяет локальную переменную x
и возвращает анонимную функцию. Анонимная функция увеливичает значение переменной x
и возвращает ее квадрат.Таким образом, мы можем зафисировать у внешней функции
square
состояние в виде переменной x
, которое будет изменяться в анонимной функции. В результате получаем 9 и 16.Погружение в goroutines и их размер: https://proglib.io/w/6e0a7965
tpaschalis.github.io
What is a goroutine? And what is their size?
I’m pretty sure that anyone learning Go has heard that “goroutines are like lightweight threads” and that “it’s okay to launch hundreds, thousands of goroutines”. Some people learn that “a goroutine takes up around 2 kilobytes”, most likely referencing the…
В статье разобраны причины, по которым использование пакета unsafe в Go может быть небезопасным: https://proglib.io/w/861850f1
Medium
Go: What is the Unsafe Package?
ℹ️ This article is based on Go 1.12.