09-05-2026, 20:42
Вступ: Чому Go (Golang) — це чудовий вибір для веб-розробки?
Go, або Golang, розроблений компанією Google, за останні роки став однією з найпопулярніших мов для створення високонавантажених бекенд-систем. Його головні переваги — це неймовірна швидкість виконання (близька до C++), простота синтаксису та вбудована підтримка конкурентності (goroutines). У цьому гайді ми пройдемо шлях від написання першого сервера до його деплою на реальний сервер.
1. Налаштування оточення
Перш за все, вам потрібно встановити Go з офіційного сайту go.dev. Після інсталяції перевірте версію в терміналі:
Створіть робочу директорію для проекту та ініціалізуйте модуль:
2. Створення базового HTTP-сервера
Go має потужну стандартну бібліотеку net/http, яка дозволяє створити сервер без сторонніх фреймворків. Створіть файл main.go:
Запустіть код командою і ви побачите свою першу сторінку в браузері.
3. Робота з шаблонами (HTML Templates)
Для створення реальних сайтів ми використовуємо пакет html/template. Це дозволяє безпечно (із захистом від XSS) вставляти дані в HTML-код.
Приклад створення шаблону templates/index.html:
Код у Go для рендерингу:
4. Вибір фреймворку: Standard Lib чи Fiber/Echo?
Хоча стандартна бібліотека крута, для великих проектів часто використовують:
- Fiber: Дуже швидкий (подібний до Express.js у Node.js).
- Echo: Мінімалістичний та високопродуктивний.
- Gin: Один із найпопулярніших завдяки своїй стабільності та екосистемі.
Якщо ви тільки починаєте — спробуйте Gin, він має чудову документацію.
5. Робота з базою даних
Для Go найкраще підходить PostgreSQL. Ми можемо використовувати драйвер pgx або ORM на кшталт GORM.
Приклад підключення (GORM):
Go дозволяє писати типобезпечні запити, що значно зменшує кількість помилок у рантаймі.
6. Структура проекту
Типова структура професійного Go-проекту виглядає так:
- /cmd: Точки входу (main.go).
- /internal: Бізнес-логіка, прихована від зовнішнього світу.
- /pkg: Бібліотеки, які можна перевикористовувати.
- /api: Визначення API-інтерфейсів.
7. Компіляція та Деплой
Одна з найбільших переваг Go — це компіляція в один бінарний файл. Вам не потрібно встановлювати Go на сервері!
Зберіть проект:
Тепер просто скопіюйте файл mysite на свій VPS (наприклад, через scp) і запустіть його.
Використання Docker:
Створіть Dockerfile:
Це створить максимально легкий образ (близько 15-20 МБ), який легко розгортати в Kubernetes або через Docker Compose.
Поради для продакшену:
1. Використовуйте Nginx як Reverse Proxy для кешування та SSL.
2. Налаштуйте Systemd юніт, щоб сайт автоматично перезапускався після збоїв.
3. Обов'язково додайте логування (наприклад, пакет uber-go/zap).
Висновок
Go — це мова для тих, хто втомився від складності Java або повільності Python/PHP. Вона дає розробнику повний контроль, неймовірну швидкість та впевненість у тому, що код буде працювати стабільно під будьяким навантаженням.
Чи пробували ви вже писати бекенд на Go? Які були ваші найбільші труднощі? Обговоримо у коментарях!
Go, або Golang, розроблений компанією Google, за останні роки став однією з найпопулярніших мов для створення високонавантажених бекенд-систем. Його головні переваги — це неймовірна швидкість виконання (близька до C++), простота синтаксису та вбудована підтримка конкурентності (goroutines). У цьому гайді ми пройдемо шлях від написання першого сервера до його деплою на реальний сервер.
1. Налаштування оточення
Перш за все, вам потрібно встановити Go з офіційного сайту go.dev. Після інсталяції перевірте версію в терміналі:
Код:
go versionСтворіть робочу директорію для проекту та ініціалізуйте модуль:
Код:
mkdir my-go-site
cd my-go-site
go mod init github.com/username/my-go-site2. Створення базового HTTP-сервера
Go має потужну стандартну бібліотеку net/http, яка дозволяє створити сервер без сторонніх фреймворків. Створіть файл main.go:
Код:
package main
import (
"fmt"
"net/http"
)
func homeHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "<h1>Вітаємо на моєму сайті на Go!</h1>")
}
func main() {
http.HandleFunc("/", homeHandler)
fmt.Println("Сервер запущено на http://localhost:8080")
http.ListenAndServe(":8080", nil)
}Запустіть код командою
Код:
go run main.go3. Робота з шаблонами (HTML Templates)
Для створення реальних сайтів ми використовуємо пакет html/template. Це дозволяє безпечно (із захистом від XSS) вставляти дані в HTML-код.
Приклад створення шаблону templates/index.html:
Код:
<!DOCTYPE html>
<html>
<head>
<title>{{.Title}}</title>
</head>
<body>
<h1>{{.Header}}</h1>
<p>Сьогодні: {{.Date}}</p>
</body>
</html>Код у Go для рендерингу:
Код:
func handler(w http.ResponseWriter, r *http.Request) {
tmpl := template.Must(template.ParseFiles("templates/index.html"))
data := struct {
Title string
Header string
Date string
}{
Title: "Мій Go Сайт",
Header: "Ласкаво просимо!",
Date: time.Now().Format("02.01.2006"),
}
tmpl.Execute(w, data)
}4. Вибір фреймворку: Standard Lib чи Fiber/Echo?
Хоча стандартна бібліотека крута, для великих проектів часто використовують:
- Fiber: Дуже швидкий (подібний до Express.js у Node.js).
- Echo: Мінімалістичний та високопродуктивний.
- Gin: Один із найпопулярніших завдяки своїй стабільності та екосистемі.
Якщо ви тільки починаєте — спробуйте Gin, він має чудову документацію.
5. Робота з базою даних
Для Go найкраще підходить PostgreSQL. Ми можемо використовувати драйвер pgx або ORM на кшталт GORM.
Приклад підключення (GORM):
Код:
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}Go дозволяє писати типобезпечні запити, що значно зменшує кількість помилок у рантаймі.
6. Структура проекту
Типова структура професійного Go-проекту виглядає так:
- /cmd: Точки входу (main.go).
- /internal: Бізнес-логіка, прихована від зовнішнього світу.
- /pkg: Бібліотеки, які можна перевикористовувати.
- /api: Визначення API-інтерфейсів.
7. Компіляція та Деплой
Одна з найбільших переваг Go — це компіляція в один бінарний файл. Вам не потрібно встановлювати Go на сервері!
Зберіть проект:
Код:
GOOS=linux GOARCH=amd64 go build -o mysite ./cmd/main.goТепер просто скопіюйте файл mysite на свій VPS (наприклад, через scp) і запустіть його.
Використання Docker:
Створіть Dockerfile:
Код:
FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o main .
FROM alpine:latest
COPY --from=builder /app/main /main
ENTRYPOINT ["/main"]Це створить максимально легкий образ (близько 15-20 МБ), який легко розгортати в Kubernetes або через Docker Compose.
Поради для продакшену:
1. Використовуйте Nginx як Reverse Proxy для кешування та SSL.
2. Налаштуйте Systemd юніт, щоб сайт автоматично перезапускався після збоїв.
3. Обов'язково додайте логування (наприклад, пакет uber-go/zap).
Висновок
Go — це мова для тих, хто втомився від складності Java або повільності Python/PHP. Вона дає розробнику повний контроль, неймовірну швидкість та впевненість у тому, що код буде працювати стабільно під будьяким навантаженням.
Чи пробували ви вже писати бекенд на Go? Які були ваші найбільші труднощі? Обговоримо у коментарях!


Займаюсь розробкою сайтів,
Але з часом ти починаєш це цінувати. Ти завжди точно знаєш, де може статися помилка.