Библиотека Go-разработчика | Golang
23.3K subscribers
2.1K photos
42 videos
87 files
4.47K links
Все самое полезное для Go-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/32d20779

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
Value receivers и nil

Представьте себе структуру с двумя методами: один использует pointer receiver, а другой — value receiver.


package main

type S struct {
N int
}

func (s *S) PointerRcv() {
}

func (s S) ValueRcv() {
}


Что происходит, если receiver равен nil?


func main() {
var s *S // s равно nil
s.PointerRcv()
s.ValueRcv()
}


Переменная s принимает нулевое значение типа *S, которое является nil. Поскольку ни один из методов не обращается к receiver'у, оба вызова метода должны пройти без проблем.

Однако, если мы выполняем этот код, вызов s.ValueRcv() вызовет панику!

📌 Что происходит?

Рассмотрим, что методы — это просто функции с некоторым синтаксическим сахаром. Метод func (s S) f() семантически идентичен функции func f(s S). Method receiver становится первым аргументом функции.

Таким образом, вышеуказанный код может быть переписан без методов следующим образом:


package main

type S struct {
N int
}

func PointerFunc(s *S) {
}

func ValueFunc(s S) {
}

func main() {
var s *S

PointerFunc(s)
ValueFunc(*s)
}


Теперь должно быть легко понять, почему ValueFunc() вызывает панику. Указатель s должен быть разыменован при передаче его в ValueFunc(). Разыменование nil указателя невозможно и приводит к панике.

Для метода func (s *S) PointerRcv(), receiver (или параметр функции во втором примере) не нуждается в разыменовании. Следовательно, паники не будет.

Так что, если у вас есть тип с pointer/value receivers, будьте осторожны, чтобы не вызывать какие-либо методы для nil значения этого типа.

#tip
👍49🥱61
Реализация in-memory кэша на Go: пример с использованием дженериков и без

⚙️ map[string]interface
⚙️ Кэш со сроком действия (TTL)
⚙️ In-memory кэш с использованием дженериков

👉
Читать
7❤‍🔥7🌚1
👩‍💻 Производительность Go с версии 1.0 до 1.22

Автор сравнивает производительность GoAWK (интерпретатор AWK с поддержкой CSV) при компиляции с использованием каждой выпущенной версии Go от 1.0 до 1.22.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔9🔥8😁31👍1
👩‍💻 Результаты первого полугодия 2024 года в опросе Go-разработчиков

📌 Все как обычно:

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

💬 Что думаете на счет последнего?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🥱12🌚6🤩2
🔗 Разрабы, на какие статьи вы переходили или какие последние ссылки открывали из Telegram? Речь идёт не только о наших статьях и ссылках, а о любых.

💬 Присылайте ссылку или просто напишите в комментах в стиле «был пост про …»👇
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱11🤔2👾1
👩‍💻 Ускорение Go-тестов на CI

Александр Павлов, сеньор Go-разработчик в СберМаркете, делится опытом ускорения Go-пайплайнов в PaaS.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍81😁1
👩‍💻 Кстати, GoLand умеет связывать Go template с типами приложения:
{{- /*gotype: package/path.type_name*/ -}}


Речь про механизм шаблонов, который разделен на два пакета: text/template и html/template. Они схожи по функциональности, с той разницей, что html/template позволяет генерировать защищенный от внедрения HTML-код. Кроме того, они помогают в написании кода в других приложениях, включая настройку Helm и менеджера пакетов Kubernetes .

👉 Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱16👍71🔥1😁1
💬 Любите костыли?

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

#холивар
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥110🤔60👍45
👩‍💻 Go — объектно-ориентированный язык программирования?

Спорная и часто обсуждаемая тема, но прежде чем отмахнуться от нее как от кликбейта, прочитайте причины автора David Wickes, почему он думает: «Go — очень объектно-ориентированный язык программирования. Думаю, даже больше, чем Java…»

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🥱4
🏃 🏃 Самоучитель по Go для начинающих. Часть 11. Обработка ошибок. Паника. Восстановление. Логирование

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

👉 Читать гайд

📌 Остальные части в серии:

1. Особенности и сфера применения Go, установка, настройка
2. Ресурсы для изучения Go с нуля
3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
4. Переменные. Типы данных и их преобразования. Основные операторы
5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
6. Функции и аргументы. Области видимости. Рекурсия. Defer
7. Массивы и слайсы. Append и сopy. Пакет slices
8. Строки, руны, байты. Пакет strings. Хеш-таблица (map)
9. Структуры и методы. Интерфейсы. Указатели. Основы ООП
10. Введение в ООП. Наследование, абстракция, полиморфизм, инкапсуляция
🔥9👍65🥱2
👩‍💻 Microsoft запускает блог Go, который будет ориентирован на использование Go с Azure и вклад Microsoft в экосистему Go в целом.

👉 Подробнее

#новости
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23😁13🤔4🥱3🌚2
🧰 Huma — современный, простой, быстрый и гибкий микрофреймворк для создания HTTP REST/RPC API на Go, поддерживаемый OpenAPI 3 и JSON Schema.

👉 GitHub & Сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥4🥱3
🔍💼 Исследование рынка: 8 наиболее востребованных языков программирования в 2024 году

Результаты исследования рынка IT-вакансий, проведенного DevJobsScanner. Были проанализированы 14 миллионов объявлений и выявлены 8 наиболее востребованных языков программирования.

Читать статью

#почитать
🥱5👍2😁1
🤯 Ваш код хорошо написан, содержит множество тестов, выполняет надлежащую обработку ошибок, логирует свои действия, но вы все равно не можете выяснить, откуда берется эта ужасная ошибка, которая продолжает преследовать?

🫀Пришло время для операции на открытом сердце — отладки кода. Delve — отладчик для Go на основе CLI, адаптированный к модели конкурентности и рантайму. Он позволяет устанавливать точки останова, проверять горутины, а также оценивать переменные и манипулировать ими в режиме реального времени. Delve поддерживает удаленную отладку и легко интегрируется с основными IDE, включая VS Code.

👉 Читать гайд по работе с Delve
🥱9👍32😁1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
💸 Как изменились зарплаты айтишников за 2023 год

Команда NEWHR Data провела опрос 3074 айтишников. Ниже — главные выводы исследования: 

1️⃣ Рост зарплат — у 59% айтишников

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

2️⃣ Зарплаты чаще росли в российских компаниях, а не иностранных

У 65% айтишников, работающих на российские компании, зарплаты по итогам года выросли. Среди сотрудников иностранных компаний рост коснулся только 50%. Разрыв можно объяснить разными ситуациями на рынке труда. В России — дефицит опытных специалистов и фокус на их привлечении/удержании. За рубежом такого дефицита нет.

3️⃣ У опытных айтишников зарплаты растут чаще, чем у неопытных

Чаще всего зарплаты росли у middle-специалистов: об этом сообщили 65% опрошенных этого грейда. Реже всего — у junior (50%). Вознаграждение грейда senior, тимлидов и топ-менеджеров увеличивалось примерно одинаково (около 60%).

4️⃣ Повышение оклада (не индексация) — ключевой фактор роста зарплат в российских компаниях

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

5️⃣ Смена компании — ключевой фактор роста зарплат в иностранных компаниях

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

#инфографика
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥2