Ru
ГлавнаяКаналыIT → Библиотека Go-разработчика | Golang

Библиотека Go-разработчика | Golang 🕘 история названий (1)

@goproglib · IT
24 100подписчиков сейчас
Подписаться в Telegram

Публикации всего: 62

Постов на странице: 10 30 50 Страница 1 из 7
📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека Go-разработчика #GoGiggle
😁 18 👍 2 💯 2 Перейти к публикации →
🤩 Go tip: вшивайте файлы прямо в бинарник через go:embed Нужны шаблоны, миграции или небольшая статика, но не хочется таскать их рядом с бинарником?
import "embed"

//go:embed templates/*.html
var templatesFS embed.FS
Дальше embed.FS можно использовать с html/template, text/template или net/http.
templates.ParseFS(templatesFS, "templates/*.html»)
Можно вшить и отдельный файл:
//go:embed version.txt
var version string
📌 Файлы попадают в программу при сборке. Изменили ресурс — пересобирайте бинарник. Для шаблонов, миграций и небольшой статики — отличный вариант. Для огромных ассетов — уже стоит подумать о другом подходе. 🔗 Документация 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека Go-разработчика #GoToProduction
👍 6 🤩 2 🥱 1 Перейти к публикации →
✏️ Расстояния между единицами: находим нужный паттерн Дан массив нулей и единиц, нужно проверить, что между любыми двумя единицами находится минимум k нулей. Звучит элементарно, но в реализации легко споткнуться. Массив [1,0,0,0,1,0,0,1] при k=2 валиден: между первой и второй единицей три нуля (достаточно), между второй и третьей — два нуля (достаточно). А вот [1,0,1,0,0,1] при k=2 — нет, потому что первые две единицы разделены только одним нулём. Запоминаем позицию последней найденной единицы. Когда встречаем новую, проверяем расстояние до неё и сразу обновляем позицию. Это будет один проход по массиву:
func kLengthApart(nums []int, k int) bool {
    lastPos := -k - 1
    
    for i := 0; i < len(nums); i++ {
        if nums[i] == 1 {
            if i - lastPos - 1 < k {
                return false
            }
            lastPos = i
        }
    }
    return true
}
Результат: O(n) время, O(1) память. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека Go-разработчика #ReadySetGo
❤ 6 👾 4 Перейти к публикации →
🛠️ sqlc: пишешь SQL → получаешь типобезопасный Go Вместо ORM и ручного Scan можно оставить SQL как есть, а Go-код сгенерировать:
-- name: GetAuthor :one
SELECT id, name, bio
FROM authors
WHERE id = $1;
sqlc generate
После генерации:
author, err := queries.GetAuthor(ctx, id)
sqlc проверяет запросы относительно схемы и генерирует типизированные структуры и методы. Поддерживаются PostgreSQL, MySQL и SQLite. ⚡️ Документация 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека Go-разработчика #GoToProduction
👍 12 🥱 7 🤔 3 · всего 24 Перейти к публикации →
🛡 Go tip: не открывайте локальный сервис наружу случайно Если HTTP-сервис должен быть доступен только на вашей машине, слушайте 127.0.0.1, а не 0.0.0.0:
srv := &http.Server{
    Addr: "127.0.0.1:8001",
}
127.0.0.1 — только локальный интерфейс. А:
Addr: "0.0.0.0:8001»
означает прослушивание всех IPv4-интерфейсов. 📌 Для локальных админок, debug-сервисов и dev-инструментов это простая настройка, которую легко забыть — и случайно выставить сервис в сеть. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека Go-разработчика #GoToProduction
❤ 9 🥱 7 👍 2 · всего 21 Перейти к публикации →
💡 Как append растит слайс Все знают, что append добавляет элемент в слайс. А вот что происходит, когда место в массиве кончилось, знают не всегда, и как раз тут прячется пара неожиданностей. 🔵 Пока есть запас У слайса есть len и cap. Пока len меньше cap, append дописывает элемент прямо в тот же массив и возвращает слайс, который смотрит туда же. Никакого копирования, дёшево. Именно поэтому два слайса, делящие один массив, могут внезапно перетирать данные друг друга при append в один из них. 🔵 Когда запас кончился Как только cap исчерпан, рантайм выделяет новый массив побольше, копирует туда старые элементы и возвращает слайс уже на новую память. С этого момента старый и новый слайс не связаны, и запись в один не видна в другом. Отсюда правило, которое многих спасало от багов. Всегда присваивайте результат обратно.
s = append(s, x)
🔵 На сколько растёт Точный коэффициент это деталь реализации, которая менялась от версии к версии, поэтому закладываться на конкретное число не стоит. Грубый ориентир такой. Маленькие слайсы растут примерно вдвое, большие прибавляют около четверти за раз, а переход между режимами сглажен в районе нескольких сотен элементов. Смысл в том, чтобы амортизировать стоимость и не копировать массив на каждом добавлении. Если вы заранее знаете примерный размер, выделяйте вместимость сразу.
s := make([]int, 0, n)
for i := 0; i < n; i++ {
    s = append(s, f(i))
}
Так вы избегаете череды перевыделений и копирований, а заодно снимаете нагрузку со сборщика мусора. На горячих циклах это заметно. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека Go-разработчика #GoDeep
👍 6 🥱 4 ❤ 2 · всего 13 Перейти к публикации →
⚙️ Go tip: errgroup вместо ручного управления группой горутин Нужно параллельно выполнить несколько задач, остановиться при ошибке и ограничить количество одновременно работающих операций? Вместо WaitGroup + канала ошибок можно использовать golang.org/x/sync/errgroup:
g, ctx := errgroup.WithContext(ctx)
g.SetLimit(8)

for _, url := range urls {
    g.Go(func() error {
        return fetch(ctx, url)
    })
}

if err := g.Wait(); err != nil {
    return err
}
WithContext отменяет контекст при первой ошибке, SetLimit(8) держит максимум 8 активных горутин, а Wait() возвращает ошибку. 🔗 Источник 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека Go-разработчика #GoToProduction
👍 18 🥱 5 ❤‍🔥 2 · всего 27 Перейти к публикации →
🔎 Go tip: откуда в проекте взялась эта зависимость? Нашли незнакомый модуль в go.mod и не понимаете, кто его подтянул? Поможет:
go mod why -m golang.org/x/text
Go покажет цепочку зависимостей, из-за которой модуль оказался нужен проекту. Например:
your-project
    ↓
github.com/example/api
    ↓
golang.org/x/text
📌 Полезно перед чисткой go.mod, обновлением зависимостей или разбором supply chain. А если нужно посмотреть, какие модули вообще используются, пригодится:
go mod graph
📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека Go-разработчика #GoToProduction
👍 12 🎉 2 Перейти к публикации →
Go-Go-Gadg...Error? Смотрим, как ошибаются Go разработчики! В Go разработчики ошибаются как и в любом другом языке: опечатки, дубликаты, нерабочие условия проверок и тому подобное. Но почему? Ведь многие используют тот же go vet который прекрасно находит всё это… ведь так... да? На вебинаре разработчик PVS-Studio Глеб Асламов разберет частые и типовые ошибки Go разработчиков в известных проектах. А еще вы узнаете, какие ошибки не могут найти стандартные инструменты и подходы (и что с этим делать). Регистрируйтесь по ссылке! После вебинара все регистранты получат запись. Подписывайтесь на PVS-Studio, чтобы оставаться в курсе последних новостей о статическом анализе: — Telegram — MAX
❤ 2 🔥 2 Перейти к публикации →
🐸 Библиотека Go-разработчика #GoGiggle
😁 16 👏 3 ❤ 2 Перейти к публикации →
1 2 3 6 7

История названий канала

14.08.2026 название Библиотека Go разработчика Библиотека Go-разработчика | Golang
Дата — момент, когда изменение заметил наш обход.

Другие каналы категории