Go (Golang) to kompilowany język programowania stworzony przez Google w 2009 roku. Został zaprojektowany z myślą o prostocie, wydajności i współbieżności. Go kompiluje się do pojedynczego binarnego pliku — zero zależności, instant deploy.
Go jest standardem w infrastrukturze (Docker, Kubernetes, Terraform — wszystkie napisane w Go) i idealnym wyborem do budowy mikroserwisów, API i systemów real-time.
package main
type User struct {
ID string `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
Age int `json:"age"`
}
func (u User) IsAdult() bool {
return u.Age >= 18
}
func (u User) Display() string {
return fmt.Sprintf("%s (%d)", u.Name, u.Age)
}
package main
import (
"encoding/json"
"net/http"
"github.com/go-chi/chi/v5"
)
func main() {
r := chi.NewRouter()
r.Get("/api/users", handleGetUsers)
r.Post("/api/users", handleCreateUser)
http.ListenAndServe(":8080", r)
}
func handleGetUsers(w http.ResponseWriter, r *http.Request) {
users, err := db.GetAllUsers(r.Context())
if err != nil {
http.Error(w, err.Error(), 500)
return
}
json.NewEncoder(w).Encode(users)
}
func fetchAll(urls []string) []Result {
ch := make(chan Result, len(urls))
for _, url := range urls {
go func(u string) {
resp, err := http.Get(u)
ch <- Result{URL: u, Resp: resp, Err: err}
}(url)
}
results := make([]Result, 0, len(urls))
for i := 0; i < len(urls); i++ {
results = append(results, <-ch)
}
return results
}
Szybkie, lekkie serwisy. Goroutines obsługują tysiące requestów jednocześnie.
Chi, Gin, Echo (REST). gRPC + Protobuf dla komunikacji między serwisami.
Cobra, Viper. Kompilacja do jednego binarnego pliku. Zero zależności runtime.
Docker, Kubernetes, Terraform — wszystkie napisane w Go. Standard w DevOps.
WebSockets, event streaming, Kafka consumers. Niskie latency, wysoka przepustowość.
Małe Docker images (~10MB). Szybki cold start. Idealny do Cloud Run, Lambda.
Idealny gdy: budujesz mikroserwisy, potrzebujesz wysokiej wydajności i współbieżności, tworzysz CLI tools, infrastrukturę, systemy real-time, API o wysokim RPS.
Nie najlepszy gdy: budujesz frontend (lepiej TypeScript), potrzebujesz ORM i rapid prototyping (lepiej Python/Django), budujesz aplikację mobilną (lepiej Flutter).