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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
🚀 Вышли версии Go 1.21.2 и 1.20.9

🔐Выпуск включают исправления безопасности для cmd/go и директивы "//line" (CVE-2023-39323).

🔈Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
💬В Go есть такое понятие, как «затенение» (англ. shadowing) переменной. Что оно из себя представляет?

🔹В Go происходит «затенение», когда переменная, объявленная во внутренней области видимости, имеет то же имя, что и переменная во внешней области видимости.

🔹В результате внутренняя переменная «затеняет» внешнюю, делая её недоступной в своей области видимости.

📌Пример:

package main

import (

"fmt"
)

func main() {
x := 10

if true {
x := 5 // здесь происходит затенение внешней переменной x
fmt.Println(x) // выводит 5, т. к. используется внутренняя переменная x
}

fmt.Println(x) // выводит 10, т. к. используется внешняя переменная x
}

🔹«Затенение» может быть особенно запутывающим, когда оно происходит с результатами функций, такими как err. Например, часто в Go вы можете видеть следующий код:

value, err := someFunction()
if err != nil {

// обработка ошибки
}

// ...

value2, err := anotherFunction() // здесь может произойти «затенение», если использовать := вместо =
if err != nil {
// обработка ошибки
}

Если вы случайно используете := вместо =, когда присваиваете результат anotherFunction(), вы создадите новую переменную err, которая «затенит» внешнюю переменную err. Это может привести к тому, что ошибки будут проигнорированы или обработаны неправильно.

📌Как обнаружить shadowing в коде? Есть не сколько способов: использовать встроенные инструменты Go или линтеры.

1. go vet -shadow ./...
2. golangci-lint run --enable shadow
3.
$ go get -u golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow
$ go vet -vettool=$(which shadow)
👍36🌚3
🧰Мини-обзор стека Go-разработчика с акцентом на практику и достоинства/недостатки каждой библиотеки:

• kong,
• req,
• echo,
• worker,
• sqlite3 driver,
• ginkgo,
• golangci-lint,
• lo,
• log/slog.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔6👍2🥱1
Boxes and Glue — Go-библиотека для рендеринга PDF с использованием алгоритмов TeX. Основные фичи:

🏎 Высокая скорость
👌 Высокое качество вывода
🔩 Расширяемость
🚀 Возможности OpenType и формирование шрифта с помощью harfbuzz

Пример кода поможет понять используемую концепцию более подробно.

🔗GitHub
🔥10👍41🙏1
Как-то мы упустили из виду, что ребята из Evrone пообщались с Робом Пайком о карьере, охватывающей четыре десятка лет, об эволюции языка Go за последние 10 лет и перспективах на будущее.

👉 Читать интервью
👍35
Мнение Владимира Балуна о том, что должен знать начинающий Go-разработчик.

📺 Смотреть

#карьера
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱33👍4🤔32
🖼️ Антон Околелов, Go-тимлид в команде Karuna, делится опытом поиска «мёртвого» кода в проекте и оценки покрытия тестами «живого» кода

В Go 1.20 завезли возможность сбилдить приложение с флагом cover: go build -cover. После запуска приложения будет собираться статистика, показывающая, какие части кода были выполнены, а какие — нет.

Это, конечно, было сделано для интеграционных тестов, когда приложение запускается целиком в каких-то сценариях (а не через go test), но, вероятно, можно попробовать использовать этот кейс и по-другому: запустить прямо в проде, подождать и посмотреть, какие участки кода в реальности никогда не запускаются.

👉 Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🤔31🥱1
🤔Обречен ли пакет encoding/json?

На GitHub началось обсуждение, цель которого — создание официального предложения по улучшению или, возможно, замене пакета json для устранения недостающей функциональности, недостатков API, ограничений производительности и поведенческих изъянов.

💬Список недостатков достаточно длинный, впрочем как и список предлагаемых улучшений. А вы что думаете?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38🙏4
Writing_a_Netflix_Disney_Movie_Recommender_with_Go_by_Movie_o.pdf
5 MB
🎥 Написание сервиса рекомендаций к фильмам Netflix/Disney+ на Go

Под катом — пошаговый гайд по разработке простого веб-сервиса REST API на Go, который принимает от пользователя некоторую информацию (страна, подписки, жанр, ключевое слово и тип фильма) и предлагает рекомендации с соответствующими ссылками. Код — на GitHub, а готовый продукт — на reccio.com.
🔥9👍42
🎆Вслед за недавними обновлениями прилетели новые релизы Go 1.21.3 и 1.20.10, которые исправляют баги в net/http (CVE-2023-39325).

📌Обновления популярных Go-инструментов:

Mods 1.0.0 — CLI ИИ-инструмент от создателей Charm
Viper 1.17 — мощное и гибкое решение для конфигурации Go-приложений
requests 0.23.5 удобная библиотека HTTP-запросов для Go
task 3.31.0 — простой в использовании инструмент для запуска/сборки задач
Roaring 1.6 — реализация растровой структуры данных Roaring
Betteralign 0.3.1 — инструмент для обнаружения структур, элементы которых можно лучше выровнять
Ginkgo 2.13 – современный фреймворк для тестирования

#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
💡gRPC и Go на практике

🤩Вы, вероятно, слышали о gRPC, если еще не использовали её. Она особенно популярна для межсервисной связи благодаря своей эффективности, языковой независимости и встроенной поддержке таких вещей, как MTLS.

☝️Выше представлен простой пример начала работы с gRPC от Matt Boyle.

#go #tip
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍5
🔝 Лучшие практики Go: путь к чистому коду

В статье познакомимся с рекомендациями по написанию чистого кода на Go. Разберемся на примерах с особенностями языка и применим на практике основные синтаксические конструкции.

🔗 Читать статью
🔗 Зеркало
👍9🥱2🔥1🌚1
👩‍💻 Все, что вы всегда хотели знать о выводе типа (и немного больше)

Вывод типа позволяет компилятору Go определять типы без явных аннотаций. В этом материале, основанном на выступлении Robert Griesemer из команды Go на GopherCon 2023, рассказывается обо всем, что вам нужно знать по часто неправильно понимаемой теме.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🎉1
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

🐘PHP

Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека devops’a
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook
🔸Instagram
👍5🔥2😁1