Библиотека Go разработчика | Golang


Гео и язык канала: Россия, Русский
Категория: Технологии


Все самое полезное для Go-разработчика в одном канале.
Список наших каналов: https://t.me/proglibrary/8353
Учиться у нас: https://proglib.io/w/907158ab
Обратная связь: @proglibrary_feedback_bot
По рекламе: @proglib_adv
Прайс: @proglib_advertising

Связанные каналы  |  Похожие каналы

Гео и язык канала
Россия, Русский
Категория
Технологии
Статистика
Фильтр публикаций


👩‍💻 Go — объектно-ориентированный язык программирования?

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

👉 Читать


💬 Любите костыли?

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

#холивар


17 мая собираем всех на IT-конференцию МТС True Tech Day.

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

Каждый участник конференции поучаствует в сессиях от лидеров индустрии, испытает технологии в true labs и получит новые впечатления и эмоции.

Что будет:
→ 5 тематических треков: Main, Development, AI/ML, Cloud, Science
→ 50 спикеров с докладами про архитектуру, облачные платформы, NLP4Code, вероятностное программирование, безопасность контейнеров и другое
→ 10 часов нетворкинга
→ цифровые зоны и digital-интеграции
→ а ещё вечеринка со звездой

Все спикеры и темы уже на сайте. Регистрируйся на True Tech Day. Участие бесплатное


👩‍💻 Кстати, GoLand умеет связывать Go template с типами приложения:
{{- /*gotype: package/path.type_name*/ -}}


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

👉 Подробнее

5k 1 25 10 23

👩‍💻 Ускорение Go-тестов на CI

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

👉 Читать


🔗 Разрабы, на какие статьи вы переходили или какие последние ссылки открывали из Telegram? Речь идёт не только о наших статьях и ссылках, а о любых.

💬 Присылайте ссылку или просто напишите в комментах в стиле «был пост про …»👇


👩‍💻 Результаты первого полугодия 2024 года в опросе Go-разработчиков

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

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

💬 Что думаете на счет последнего?


👩‍💻 Производительность Go с версии 1.0 до 1.22

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

👉 Читать


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

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

👉
Читать


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


Репост из: Библиотека программиста | программирование, кодинг, разработка
👩‍💻 Обзор сравнительно новых (и поэтому малоизвестных) команд Git, которые сделают вашу повседневную работу проще:

➡️ git switch — просто переключает ветку
➡️ git restore — восстанавливает файл до последней зафиксированной версии
➡️ git sparse-checkout — загружает в рабочую копию только подмножество файлов из большого репозитория
➡️ git worktree — управляет несколькими рабочими деревьями, связанными с одним репозиторием
➡️ и другие

👉 Читать перевод & оригинал


👩‍💻 GoLand: путеводитель по основным фичам популярной IDE

✔️ Редактор кода
✔️ Встроенные инструменты и интеграция
✔️ Фронтенд и бэкенд
✔️ Экосистема плагинов


Репост из: Библиотека программиста | программирование, кодинг, разработка
💻 Подборка вопросов от Кирилла Мокевнина, которые имеет смысл задать на собесах для проверки уровня разработчика и навыков решения прикладных задач (типовых для веба)

👉 Читать остальные вопросы

💬 Веб-разработчики, как вам?

Показано 13 последних публикаций.