👁 В продакшене важно не только что делает функция, но и как быстро она это делает. Особенно если это хендлер, запрос к БД или внешний API. Один из удобных способов — встроить измерение времени через defer и time.Since.
📝 Минималистичное, но мощное решение:
package main
import (
"log"
"time"
)
func timed(name string) func() {
start := time.Now()
return func() {
log.Printf("%s took %s", name, time.Since(start))
}
}
func main() {
defer timed("HeavyTask")()
time.Sleep(2 * time.Second) // имитация тяжёлой операции
}
📌 Что происходит:
timedвозвращает функцию, которая при вызове логирует длительность- Через
deferона откладывается до конца функции time.Since(start)считает, сколько прошло времени- Можно использовать в любой функции, не дублируя код
🔎 Подходит для:
- Обёртки над HTTP-хендлерами или gRPC-методами
- Замеров времени операций с БД или кэшем
- Логирования длительных фоновых задач
❗️ Лёгкое, лаконичное решение, которое можно встроить даже в продовые микросервисы без внешних зависимостей.
tags: #go #разработка #полезно
❤️ @recura_tech



