Go
Go — це компільована, статично типізована мова програмування, створена в Google для простого, швидкого й надійного створення серверних програм, backend-сервісів, API, cloud-систем, DevOps-утиліт, CLI, мікросервісів і високонавантажених систем.
Go часто називають Golang, але офіційна назва мови — Go.
Коротко: Go — це мова для практичної серверної розробки: простий синтаксис, швидка компіляція, сильна стандартна бібліотека, goroutines для concurrency і зручний deployment у вигляді одного binary.
Офіційна документація Go описує мову як open source project, designed to make programmers more productive; Go є expressive, concise, clean and efficient. [1]
Головна ідея
Головна ідея Go — зробити мову, яка добре підходить для великих інженерних команд і production-сервісів, але не перевантажена зайвою складністю.
Go фокусується на:
- простому синтаксисі;
- швидкій компіляції;
- статичній типізації;
- зручному concurrency;
- сильній стандартній бібліотеці;
- вбудованому форматуванні;
- простому deployment;
- читабельності;
- передбачуваності;
- стабільності мови.
Проста аналогія: Go — це не “швейцарський ніж із сотнею лез”, а надійний робочий інструмент: менше магії, менше синтаксичного шуму, більше прямого коду.
Go чи Golang
Офіційна назва мови — Go.
Назва Golang часто використовується в пошуку, бо:
- домен мови історично був golang.org;
- слово “Go” занадто коротке й неоднозначне;
- у пошукових системах “Golang” легше знайти.
У статтях краще писати Go, а в SEO keywords можна додавати Golang.
Актуальна версія
Станом на травень 2026 року актуальна стабільна гілка Go — Go 1.25, а останній patch release на офіційній сторінці історії релізів — go1.25.10, випущений 7 травня 2026 року. Він містить security fixes для go command, pack tool, html/template, net, net/http, net/http/httputil, net/mail і syscall, а також bug fixes у compiler, linker, runtime та інших пакетах. [2]
Go 1.25 був випущений у серпні 2025 року й зберігає Go 1 promise of compatibility, тобто майже всі Go-програми мають продовжувати компілюватися й запускатися як раніше. [3]
Для документації: у production краще вказувати точну версію: наприклад, Go 1.25.10. Patch-релізи Go часто містять security fixes.
Go 1 Compatibility
Одна з важливих ідей Go — сумісність.
Go 1 compatibility promise означає, що код, написаний для Go 1, має працювати в майбутніх версіях Go з мінімальними змінами.
Це дуже важливо для бізнесу, бо enterprise-проєкти живуть роками.
Стабільність мови — одна з причин, чому Go часто обирають для backend і infrastructure software.
Простий синтаксис
Go має навмисно простий синтаксис.
Приклад:
package main
import "fmt"
func main() {
fmt.Println("Hello, Go")
}
У Go немає надмірної кількості способів зробити одне й те саме.
Це може здаватися обмеженням, але для командної розробки це плюс: код різних людей виглядає більш однаково.
Статична типізація
Go — статично типізована мова.
Приклад:
var name string = "K2 ERP" var count int = 10 var active bool = true
Також Go підтримує type inference:
name := "K2 ERP" count := 10 active := true
Статична типізація допомагає:
- ловити помилки під час компіляції;
- краще підтримувати код;
- робити refactoring;
- будувати надійні API;
- уникати частини runtime-помилок.
Компіляція
Go компілюється у binary-файл.
Приклад:
go build
Після компіляції можна отримати один виконуваний файл.
Це зручно для:
- Docker containers;
- CLI tools;
- DevOps-утиліт;
- мікросервісів;
- deployment;
- server apps.
Чому Go люблять у DevOps: часто можна зібрати один binary, покласти його в контейнер або на сервер — і запускати без складного runtime-оточення.
Пакети
Go-код організований у packages.
Приклад:
package orders
func CalculateTotal(items []Item) float64 {
...
}
Package — це одиниця організації коду.
Go заохочує невеликі, зрозумілі packages із конкретною відповідальністю.
Modules
Go modules — система керування залежностями.
Файл go.mod описує module і dependencies.
Приклад:
module example.com/myapp go 1.25 require github.com/gin-gonic/gin v1.10.0
Команди:
go mod init example.com/myapp go mod tidy go get example.com/package
Modules зробили Go dependency management значно зручнішим і стабільнішим.
Standard library
Go має сильну стандартну бібліотеку.
У ній є пакети для:
- HTTP;
- JSON;
- templates;
- testing;
- crypto;
- filesystem;
- logging;
- context;
- time;
- sync;
- database/sql;
- compression;
- encoding;
- networking.
Саме тому для багатьох задач у Go не потрібно одразу встановлювати великий framework.
net/http
net/http — стандартний пакет Go для HTTP-серверів і клієнтів.
Простий HTTP server:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "ok")
})
http.ListenAndServe(":8080", nil)
}
Цього вже достатньо для простого web server.
Для більших API часто використовують router або framework.
REST API
Go добре підходить для REST API.
Типовий стек:
- net/http;
- chi, gin, echo або fiber;
- encoding/json;
- database/sql або ORM;
- context;
- middleware;
- structured logging;
- OpenAPI;
- tests.
Go API часто обирають за простоту, швидкість і легкий deployment.
JSON
Go має стандартний пакет encoding/json.
Приклад:
type Product struct {
ID int `json:"id"`
Name string `json:"name"`
Price int `json:"price"`
}
JSON використовується для:
- REST API;
- configs;
- integrations;
- webhooks;
- message queues;
- logs.
У Go 1.25 також з’явився новий експериментальний пакет encoding/json/v2, згаданий у release notes. [4]
Error handling
Go має явну обробку помилок.
Приклад:
file, err := os.Open("config.json")
if err != nil {
return err
}
defer file.Close()
Go не використовує exceptions як основний механізм помилок.
Це робить помилки видимими в коді.
Go-підхід: помилка — це значення. Її треба перевірити, обгорнути контекстом і повернути вище, якщо функція не може її обробити.
defer
defer відкладає виконання функції до завершення поточної функції.
Приклад:
file, err := os.Open("data.txt")
if err != nil {
return err
}
defer file.Close()
defer часто використовують для:
- закриття файлів;
- unlock mutex;
- завершення tracing span;
- cleanup;
- rollback;
- release resources.
Interfaces
Go має interfaces, але вони працюють структурно.
Приклад:
type Writer interface {
Write(p []byte) (n int, err error)
}
Тип реалізує interface автоматично, якщо має потрібні methods.
Це називається structural typing.
Перевага: менше boilerplate і гнучкіші абстракції.
Structs
Struct — основний спосіб описати дані.
Приклад:
type Customer struct {
ID int
Name string
Email string
}
Structs використовуються для:
- data models;
- DTO;
- configs;
- API responses;
- domain objects;
- database rows;
- messages.
Methods
Go дозволяє додавати methods до типів.
Приклад:
type Order struct {
Total float64
}
func (o Order) IsLarge() bool {
return o.Total > 10000
}
Methods допомагають організувати поведінку поруч із даними.
Pointers
Go має pointers, але без pointer arithmetic як у C.
Приклад:
func UpdateName(c *Customer, name string) {
c.Name = name
}
Pointers потрібні для:
- зміни значення;
- уникнення копіювання великих структур;
- роботи з nil;
- methods із pointer receiver;
- shared state.
Pointers треба використовувати обережно, щоб не створювати зайву складність.
Slices
Slice — гнучкий тип для послідовності елементів.
Приклад:
numbers := []int{1, 2, 3}
numbers = append(numbers, 4)
Slices — один із найчастіше використовуваних типів Go.
Важливо розуміти, що slice має underlying array, length і capacity.
Maps
Map — асоціативний масив.
Приклад:
prices := map[string]int{
"apple": 10,
"banana": 20,
}
Maps корисні для:
- lookup;
- grouping;
- counters;
- caches;
- dictionaries;
- temporary indexes.
Для concurrent access до map потрібна синхронізація.
Generics
Go підтримує generics.
Приклад:
func First[T any](items []T) (T, bool) {
if len(items) == 0 {
var zero T
return zero, false
}
return items[0], true
}
Generics корисні для:
- reusable data structures;
- utility functions;
- typed containers;
- algorithms;
- reducing duplication.
У Go generics зроблені стримано, без надмірної складності.
Goroutines
Goroutine — легкий потік виконання в Go.
Запуск:
go processOrder(orderID)
Goroutines — одна з головних причин популярності Go.
Вони легші за OS threads і керуються Go runtime.
Офіційний Tour of Go пояснює goroutine як lightweight thread managed by the Go runtime. [5]
Channels
Channel — механізм комунікації між goroutines.
Приклад:
ch := make(chan string)
go func() {
ch <- "done"
}()
msg := <-ch
fmt.Println(msg)
Channels дозволяють передавати дані між goroutines без прямого shared memory.
Офіційний Tour of Go описує channels як typed conduit, через який можна надсилати й отримувати значення оператором channel. [6]
Concurrency
Go відомий простим підходом до concurrency.
Concurrency у Go базується на:
- goroutines;
- channels;
- select;
- sync package;
- context;
- mutexes;
- wait groups;
- atomic operations.
Принцип Go: не діліться пам’яттю, щоб спілкуватися; спілкуйтеся, щоб ділитися пам’яттю. На практиці це означає: channels часто кращі за хаотичний shared state.
select
select дозволяє чекати на кілька channel operations.
Приклад:
select {
case msg := <-messages:
fmt.Println(msg)
case <-time.After(time.Second):
fmt.Println("timeout")
}
select корисний для:
- timeouts;
- cancellation;
- multiplexing;
- worker pools;
- event loops;
- graceful shutdown.
sync.WaitGroup
sync.WaitGroup дозволяє чекати завершення кількох goroutines.
Приклад:
var wg sync.WaitGroup
for _, id := range ids {
wg.Add(1)
go func(id int) {
defer wg.Done()
process(id)
}(id)
}
wg.Wait()
WaitGroup часто використовується в worker jobs, parallel processing і background tasks.
Mutex
Mutex захищає shared state.
Приклад:
var mu sync.Mutex count := 0 mu.Lock() count++ mu.Unlock()
Mutex потрібен, коли кілька goroutines читають і змінюють спільні дані.
Якщо mutex використовувати неправильно, можливі deadlocks або race conditions.
Race detector
Go має race detector.
Запуск:
go test -race ./...
Race detector допомагає знаходити data races у concurrent code.
Це важливий інструмент для production-сервісів із goroutines.
context.Context
context.Context використовується для cancellation, deadlines і request-scoped values.
Приклад:
func GetUser(ctx context.Context, id int) (*User, error) {
req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
...
}
Context особливо важливий для:
- HTTP requests;
- database queries;
- timeouts;
- cancellation;
- distributed systems;
- graceful shutdown.
Testing
Go має вбудований пакет testing.
Приклад:
func TestAdd(t *testing.T) {
got := Add(2, 3)
want := 5
if got != want {
t.Fatalf("got %d, want %d", got, want)
}
}
Запуск:
go test ./...
Go робить тестування стандартною частиною workflow, а не окремою екосистемою.
Table-driven tests
У Go популярні table-driven tests.
Приклад:
func TestIsValidEmail(t *testing.T) {
tests := []struct {
name string
in string
want bool
}{
{"valid", "user@example.com", true},
{"empty", "", false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := IsValidEmail(tt.in)
if got != tt.want {
t.Fatalf("got %v, want %v", got, tt.want)
}
})
}
}
Цей стиль зручний для перевірки багатьох cases.
Benchmarking
Go має вбудовані benchmarks.
Приклад:
func BenchmarkParseOrder(b *testing.B) {
for i := 0; i < b.N; i++ {
ParseOrder(sample)
}
}
Запуск:
go test -bench=. ./...
Benchmarks корисні для performance-sensitive коду.
Fuzzing
Go має вбудоване fuzz testing.
Fuzzing генерує багато inputs, щоб знайти edge cases і crashes.
Це корисно для:
- parsers;
- encoders;
- validators;
- security-sensitive code;
- protocol processing;
- file formats.
gofmt
gofmt — стандартний форматувальник Go-коду.
Запуск:
gofmt -w .
gofmt прибирає суперечки про стиль.
У Go майже немає “а давайте форматувати інакше”.
Офіційний Effective Go прямо зазначає, що formatting issues are the most contentious but least consequential, а gofmt вирішує цю проблему. [7]
go vet
go vet шукає підозрілі конструкції в коді.
Запуск:
go vet ./...
go vet може знайти:
- неправильні format strings;
- unreachable code;
- problematic struct tags;
- suspicious calls;
- copy locks;
- mistakes in tests.
go vet не замінює тести, але допомагає знайти типові помилки.
golangci-lint
golangci-lint — популярний агрегатор linters для Go.
Він може запускати багато перевірок:
- staticcheck;
- govet;
- errcheck;
- ineffassign;
- unused;
- style checks;
- security-related checks.
Для production-проєктів golangci-lint часто додають у CI.
Static binary
Go часто компілюється в один binary.
Це зручно для Docker.
Приклад Dockerfile:
FROM golang:1.25 AS build WORKDIR /app COPY . . RUN go build -o server ./cmd/server FROM gcr.io/distroless/base-debian12 COPY --from=build /app/server /server ENTRYPOINT ["/server"]
Такий підхід дає компактний deployment і менше runtime-залежностей.
Docker і Go
Go дуже популярний у Docker-екосистемі.
Причини:
- швидкий startup;
- один binary;
- невеликі images;
- простий cross-compilation;
- хороша продуктивність;
- зручний backend для microservices.
Багато cloud-native інструментів написані Go.
Kubernetes і Go
Kubernetes написаний Go.
Go дуже поширений у cloud-native світі:
- Kubernetes;
- Docker;
- Terraform;
- Prometheus;
- etcd;
- Helm;
- Caddy;
- Traefik;
- багато CLI та operators.
Це робить Go природним вибором для DevOps, platform engineering і infrastructure software.
CLI tools
Go добре підходить для CLI-утиліт.
Причини:
- easy build;
- single binary;
- cross-platform;
- fast startup;
- good standard library;
- strong ecosystem.
Популярні бібліотеки:
- cobra;
- urfave/cli;
- pflag;
- viper.
CLI на Go зручні для DevOps, automation, data tools і internal utilities.
Database access
Go має стандартний пакет database/sql.
Він задає загальний інтерфейс для SQL databases.
Популярні драйвери:
- PostgreSQL;
- MySQL;
- SQLite;
- SQL Server.
Підходи:
- raw SQL;
- sqlx;
- pgx;
- GORM;
- ent;
- sqlc.
Go-спільнота часто любить явний SQL і code generation замість важких ORM.
GORM
GORM — популярний ORM для Go.
Він корисний для швидкого CRUD.
Але в production потрібно контролювати:
- N+1 queries;
- migrations;
- transactions;
- performance;
- explicit SQL;
- schema changes.
Для складних звітів часто краще писати SQL явно.
sqlc
sqlc генерує type-safe Go-код із SQL-запитів.
Ідея:
- пишемо SQL;
- sqlc генерує Go functions;
- отримуємо type safety;
- не втрачаємо контроль над SQL.
Це популярний підхід для команд, які хочуть явний SQL без ручного boilerplate.
gRPC
Go добре підходить для gRPC.
gRPC використовується для:
- internal service communication;
- microservices;
- streaming;
- strongly typed APIs;
- high-performance RPC;
- protobuf contracts.
Go має сильну підтримку Protocol Buffers і gRPC ecosystem.
Microservices
Go часто використовують для мікросервісів.
Переваги:
- швидкий startup;
- низьке споживання ресурсів;
- простий deployment;
- concurrency;
- net/http;
- gRPC;
- cloud-native ecosystem;
- containers.
Але мікросервіси — це не завжди плюс. Вони додають складність: network, observability, tracing, deployments, versioning і distributed failures.
Observability
Для Go-сервісів потрібні:
- logs;
- metrics;
- traces;
- health checks;
- pprof;
- OpenTelemetry;
- Prometheus;
- Grafana;
- alerting.
Go має вбудований profiling через pprof, що корисно для performance debugging.
pprof
pprof — profiling tool у Go.
Він допомагає аналізувати:
- CPU usage;
- memory allocations;
- goroutines;
- blocking;
- mutex contention;
- heap profiles.
pprof особливо корисний для production performance analysis.
Logging
Go має стандартні logging можливості, але для production часто використовують structured logging.
Популярні варіанти:
- slog;
- zap;
- zerolog;
- logrus.
Structured logs краще підходять для observability, бо їх легше шукати й аналізувати.
Security
Go має сильну стандартну бібліотеку для security-sensitive задач, але безпека залежить від коду й процесів.
Потрібно контролювати:
- input validation;
- SQL injection;
- SSRF;
- auth;
- authorization;
- secrets;
- TLS;
- dependencies;
- logging;
- template escaping;
- path traversal;
- race conditions;
- supply chain;
- container images.
Go patch releases часто містять security fixes, тому версію Go потрібно оновлювати. [8]
Secrets
Не можна зберігати secrets у коді.
Secrets:
- database passwords;
- API keys;
- tokens;
- private keys;
- OAuth secrets;
- cloud credentials.
Краще використовувати:
- environment variables;
- Vault;
- Kubernetes Secrets;
- cloud secret managers;
- CI/CD secret storage.
Templates
Go має html/template і text/template.
Для HTML потрібно використовувати html/template, бо він має contextual escaping.
Це допомагає зменшити ризик XSS.
Але templates не замінюють правильну авторизацію й валідацію.
Go і AI
Go не є головною мовою для AI research, але корисний для AI-сервісів.
Сценарії:
- backend для LLM API;
- RAG gateway;
- vector database integration;
- streaming API;
- AI agent backend;
- document processing service;
- speech pipeline;
- inference service wrapper;
- observability;
- cost control;
- rate limiting.
Python часто використовується для training, а Go — для production-сервісу навколо моделі.
Go і Python
Go і Python часто доповнюють одне одного.
| Мова | Сильні сторони |
|---|---|
| Go | backend, concurrency, cloud, microservices, CLI, deployment |
| Python | data science, AI research, scripting, ML libraries, automation |
Типовий підхід:
- Python тренує модель;
- Go обслуговує API;
- Go викликає Python-сервіс або model endpoint;
- observability і deployment робляться cloud-native.
Go і C#
Go і C# обидві підходять для backend.
| Мова | Сильні сторони |
|---|---|
| Go | простота, concurrency, cloud-native, single binary, DevOps |
| C# | .NET ecosystem, enterprise tooling, ASP.NET Core, rich type system |
Go часто обирають для infrastructure, microservices і CLI.
C# часто обирають для enterprise backend, Microsoft ecosystem і великих бізнес-систем.
Go і Java
Go часто порівнюють із Java.
Go простіший, швидше стартує, має легший deployment.
Java має величезну enterprise-екосистему, JVM, Spring і багатий tooling.
Go сильний для:
- microservices;
- cloud-native;
- CLI;
- infrastructure tools;
- простих API;
- concurrency.
Java сильна для:
- великих enterprise-систем;
- Spring ecosystem;
- JVM-based platforms;
- складних enterprise-процесів.
Go і Rust
Go і Rust часто порівнюють у системній і серверній розробці.
Go простіший у вивченні й має garbage collector.
Rust дає сильніший контроль пам’яті й безпеку без GC, але має складнішу модель ownership.
Go часто краще для швидкого backend і cloud-сервісів.
Rust часто краще для low-level, embedded, performance-critical і memory-safety задач.
Go у бізнесі
Go корисний для бізнесу, коли потрібні:
- швидкі backend-сервіси;
- простий deployment;
- мікросервіси;
- API gateway;
- інтеграції;
- high-concurrency services;
- DevOps tools;
- background workers;
- event processing;
- cloud services;
- внутрішні утиліти.
Go добре працює там, де важливі стабільність, простота й низька операційна складність.
Go і ERP-системи
Go не є ERP-системою.
Він не веде облік сам по собі, не проводить документи й не керує складом без прикладної логіки.
У контексті K2 ERP Go може бути корисним для зовнішніх сервісів та інтеграцій:
- API gateway;
- middleware;
- webhook service;
- background worker;
- сервіс синхронізації;
- high-load integration endpoint;
- CLI для адміністрування;
- імпорт/експорт;
- message queue consumer;
- monitoring exporter.
Але якщо основна логіка K2 ERP написана на Python, Go варто додавати тільки там, де він справді дає перевагу: concurrency, deployment, performance або infrastructure integration.
Коли Go особливо корисний
Go особливо корисний для:
- backend API;
- microservices;
- cloud-native systems;
- Docker/Kubernetes tools;
- CLI;
- DevOps;
- network services;
- high-concurrency services;
- gRPC;
- internal tools;
- background workers;
- observability agents;
- API gateways;
- інтеграцій.
Коли Go може бути невдалим вибором
Go може бути невдалим вибором, якщо:
- потрібна AI research екосистема Python;
- потрібна складна enterprise UI;
- потрібен багатий ORM і enterprise framework як у Java/C#;
- задача є простим one-off script;
- команда не знає Go;
- потрібна low-level memory control як у Rust;
- проєкт уже повністю на іншому стеку;
- потрібна дуже складна generic type-level логіка.
Типові помилки в Go
Поширені помилки:
- ігнорувати
err; - запускати goroutines без cancellation;
- забувати про context timeout;
- робити data races;
- використовувати channels там, де простіше mutex;
- використовувати mutex там, де краще channel;
- не закривати response body;
- не використовувати defer для cleanup;
- робити глобальний shared state;
- не писати tests;
- не запускати race detector;
- не перевіряти dependency vulnerabilities;
- створювати занадто великі packages;
- копіювати Java/C# architecture без адаптації до Go.
Хороші практики
Під час роботи з Go варто:
- Писати простий і читабельний код.
- Завжди перевіряти помилки.
- Використовувати context для timeout і cancellation.
- Не запускати goroutines без контролю lifecycle.
- Запускати
gofmt. - Використовувати
go test ./.... - Запускати
go test -raceдля concurrent code. - Писати table-driven tests.
- Тримати packages невеликими.
- Не створювати abstraction без потреби.
- Оновлювати Go patch releases.
- Логувати структуровано.
- Додавати observability.
- Контролювати dependencies.
- Використовувати profiling для performance issues.
Практичний висновок
Go — сильна мова для backend, cloud, API, DevOps, мікросервісів і concurrent systems.
Сильні сторони:
- простий синтаксис;
- статична типізація;
- швидка компіляція;
- single binary deployment;
- goroutines;
- channels;
- стандартна бібліотека;
- net/http;
- testing;
- gofmt;
- race detector;
- modules;
- cloud-native ecosystem;
- Kubernetes/Docker/DevOps;
- хороша продуктивність.
Обмеження:
- не головна мова для AI research;
- менше enterprise abstraction, ніж у Java/C#;
- error handling може здаватися повторюваним;
- generics стримані;
- GUI ecosystem не основна сила;
- неправильна concurrency може створити data races;
- простота мови не замінює архітектуру.
Go найкраще використовувати там, де потрібні прості, швидкі, надійні серверні програми, які легко збирати, запускати, масштабувати й підтримувати.
Пояснення термінів
- Go — компільована статично типізована мова програмування.
- Golang — неофіційна пошукова назва Go.
- Go module — одиниця dependency management у Go.
- Package — одиниця організації Go-коду.
- Goroutine — легкий потік виконання, керований Go runtime.
- Channel — механізм комунікації між goroutines.
- Concurrency — виконання кількох задач, які просуваються незалежно.
- Parallelism — одночасне виконання на кількох ядрах.
- select — оператор очікування кількох channel operations.
- context.Context — механізм cancellation, deadlines і request-scoped values.
- defer — відкладене виконання функції.
- Interface — контракт методів, який тип реалізує структурно.
- Struct — структура даних у Go.
- Slice — гнучка послідовність елементів.
- Map — асоціативний масив.
- Pointer — посилання на значення в пам’яті.
- Generics — параметризований код для різних типів.
- gofmt — стандартний форматувальник Go-коду.
- go vet — інструмент статичного аналізу підозрілих конструкцій.
- Race detector — інструмент пошуку data races.
- pprof — profiling tool у Go.
- net/http — стандартний пакет для HTTP.
- database/sql — стандартний інтерфейс для SQL databases.
- gRPC — RPC framework, часто використовується з Go.
- Static binary — виконуваний файл із мінімальними зовнішніми залежностями.
- Worker pool — набір goroutines для паралельної обробки задач.
Дивіться також
- C Sharp
- Python
- Розробка в K2 ERP
- Тестування коду
- API K2 ERP
- Інтеграції K2 ERP
- Звітність K2 ERP
- LangChain
- MLflow
- Deep Learning
- Великі мовні моделі
- GPT
- Claude Models
- DeepSeek Models
- GitHub Copilot
- Cursor
- Tabnine
- Штучний інтелект
- Генеративний AI
Джерела
- Go — офіційна сторінка
- Go Documentation
- Go 1.25 Release Notes
- Go Release History
- Go Blog — Go 1.25 is released
- Effective Go
- A Tour of Go
- A Tour of Go — Goroutines
- A Tour of Go — Channels
- Go Standard Library
- Go package net/http
- Go package testing
- Go package context
- Go package database/sql
- MediaWiki — Help:Formatting
- MediaWiki — Help:Links