Overview
Go (Golang) is a statically typed, compiled programming language designed at Google for building simple, reliable, and efficient software. Created by Rob Pike, Ken Thompson, and Robert Griesemer, Go combines the performance and safety of compiled languages like C++ with the ease of use and productivity of interpreted languages like Python. Go's killer features include blazing-fast compilation, native concurrency with goroutines and channels, built-in garbage collection, and a comprehensive standard library. The language enforces simplicity - one way to do things, explicit error handling, and minimal syntax - making Go code easy to read, maintain, and scale across large teams.
Key Features
Fast Compilation
Compile millions of lines in seconds with dependency management
Goroutines & Channels
Lightweight concurrency with CSP-style message passing
Static Binaries
Single binary with no dependencies for easy deployment
Comprehensive Standard Library
HTTP servers, JSON, crypto, testing, and more built-in
Cross-Platform
Compile for Linux, macOS, Windows, ARM from any platform
Built-in Tooling
go fmt, go test, go mod, race detector, profiler included
Pareiškėjo pavardė, pareigos, pareigos, pareigos, pareigos, pareigos, pareigos, pareigos, pareigos, pareigos, pareigos ir atsakomybė.
• Backend APIs and microservices
• Cloud-native applications (Docker, Kubernetes)
• DevOps tools and CLI applications
• Distributed systems and network services
• High-performance web servers
• Data processing pipelines
• System programming and infrastructure tools
Installation Guide
**Ubuntu Installation:**
```bash
# Download latest (check golang.org/dl)
wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz
# Extract to /usr/local
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz
# Add to PATH
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
source ~/.bashrc
# Verify
go version
```
**Hello World:**
```go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
```
```bash
go run main.go
go build -o myapp main.go
./myapp
```
Configuration Tips
**Project Structure:**
```
myapp/
├── go.mod # Module definition
├── go.sum # Dependency checksums
├── main.go # Entry point
├── internal/ # Private packages
└── cmd/ # CLI commands
```
**go.mod:**
```go
module github.com/user/myapp
go 1.21
require (
github.com/gin-gonic/gin v1.9.1
github.com/lib/pq v1.10.9
)
```
**HTTP Server Example:**
```go
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "Hello"})
})
r.Run(":8080")
}
```
**Concurrency Example:**
```go
package main
import (
"fmt"
"time"
)
func worker(id int, jobs <-chan int, results chan<- int) {
for j := range jobs {
fmt.Printf("Worker %d processing job %d\n", id, j)
time.Sleep(time.Second)
results <- j * 2
}
}
func main() {
jobs := make(chan int, 100)
results := make(chan int, 100)
// Start 3 workers
for w := 1; w <= 3; w++ {
go worker(w, jobs, results)
}
// Send 5 jobs
for j := 1; j <= 5; j++ {
jobs <- j
}
close(jobs)
// Collect results
for a := 1; a <= 5; a++ {
<-results
}
}
```