7 вопросов
Богатая стандартная библиотека Go: net/http для веб-серверов, encoding/json для JSON, fmt для форматирования, io для потоков, time для работы с временем.
net/http - мощный пакет для HTTP-клиента и сервера. http.ListenAndServe(":8080", handler) запускает сервер. Многие Go-фреймворки (gin, chi, echo) построены поверх net/http.
Подробнее →encoding/json - пакет для сериализации (Marshal) и десериализации (Unmarshal) JSON. Работает через рефлексию и теги структур (json:"name").
Подробнее →json.Marshal(v)? 🟢 Лёгкий
▶
json.Marshal принимает любое значение и возвращает ([]byte, error) - JSON-представление. Экспортированные поля структур попадают в JSON, приватные - нет.
Подробнее →fmt - форматированный ввод/вывод. Println, Printf, Sprintf, Fprintf. Поддерживает глаголы: %v (значение), %T (тип), %d (число), %s (строка).
Подробнее →io.Copy(dst, src)? 🟡 Средний
▶
io.Copy читает из io.Reader и пишет в io.Writer, пока не встретит io.EOF или ошибку. Работает с любыми потоками: файлы, сеть, буферы.
Подробнее →Пакет time предоставляет Time, Duration, Timer, Ticker. time.Now(), time.Since(), time.Sleep(). Формат даты: t.Format("2006-01-02") - Go использует эталонную дату.
Подробнее →http.Client{Timeout: 5*time.Second} - таймаут на весь запрос. context.WithTimeout - более гибкий, можно задать для отдельных запросов. На практике используют оба подхода.
Подробнее →