Примеры приложений, написанных Golang (Go)

Golang (известный как Go) - это современный язык программирования, разработанный Google. Он обладает следующими характеристиками:

  1. Статическая типизация: Go использует строгую систему типов, что помогает предотвратить ошибки при работе с различными типами данных.
  2. Простота и эффективность: Язык ориентирован на простоту и легкость в использовании, при этом обеспечивая высокую производительность.
  3. Поддержка параллелизма: Go имеет встроенные функции для работы с конкурентными операциями, что делает его идеальным для разработки многопоточных приложений.
  4. Удобство развертывания: Программы, написанные на Go, компилируются в один исполняемый файл, что упрощает их развертывание. Бинарные файлы Go обычно статически связаны, что означает, что все необходимые библиотеки включены в скомпилированный бинарный файл.

Примеры приложений, написанных на Go:

  • Kubernetes: Система оркестрации контейнеров, которая позволяет автоматизировать развертывание, масштабирование и управление приложениями в контейнерах.
  • Docker: Платформа для разработки, доставки и запуска приложений в контейнерах, которая также использует Go для своих основных компонентов.
  • Prometheus: Система мониторинга и оповещения для приложений и инфраструктуры.
  • Terraform: Инструмент для создания, изменения и версионирования инфраструктуры безопасным и эффективным способом.
  • InfluxDB: База данных для хранения временных рядов, оптимизированная для высокой доступности и производительности.

Go часто используется для разработки облачных приложений, микросервисов, сетевых служб, а также для автоматизации и управления инфраструктурой. Его простота, скорость и мощные инструменты для работы с параллельными процессами делают его популярным выбором в современной разработке программного обеспечения.

Установка Go Очень проста. Зайдите на страницу https://go.dev/doc/install и загрузите бинарный файл. Так же можно установить из репозиториев, для Ubuntu выполните команду:

apt install golang

После установки проверьте версию Go, чтобы убедиться, что установка прошла успешно:

go version
go version go1.18.1 linux/amd64

Тестирование установки: Создайте простую программу на Go для тестирования. Например, создайте файл hello.go с содержимым:

package main
 
import "fmt"
 
func main() {
    fmt.Println("Hello, world!")
}

Затем скомпилируйте и запустите её (запуск программы на Go как скрипта):

go run hello.go

Если все шаги выполнены правильно, вы должны увидеть вывод "Hello, world!" в терминале. Это означает, что Go успешно установлен и работает на вашем Ubuntu. Для создания бинарного файла нашего примера, запустите с ключём build

go build hello.go
 
./hello
Hello, world!

Создание простого сервера с поддержкой REST API на языке Go можно выполнить с использованием стандартной библиотеки net/http. Ниже приведен пример такого сервера, который обрабатывает базовые HTTP-запросы для управления ресурсом "пользователь" (User).

Сначала, давайте определим структуру User и создадим простой веб-сервер:

package main
 
import (
    "encoding/json"
    "log"
    "net/http"
    "strconv"
    "sync"
)
 
// User представляет собой простую структуру пользователя.
type User struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
}
 
// users будет хранить пользователей в памяти.
var (
    users = make(map[int]User)
    mu    sync.Mutex
    idSeq int
)
 
// createUser создает нового пользователя.
func createUser(w http.ResponseWriter, r *http.Request) {
    mu.Lock()
    defer mu.Unlock()
 
    // Генерация ID для пользователя
    idSeq++
    user := User{ID: idSeq}
 
    // Декодирование полученного пользователя
    if err := json.NewDecoder(r.Body).Decode(&user); err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }
 
    users[user.ID] = user
 
    w.WriteHeader(http.StatusCreated)
    json.NewEncoder(w).Encode(user)
}
 
// getUser возвращает пользователя по ID.
func getUser(w http.ResponseWriter, r *http.Request) {
    id, err := strconv.Atoi(r.URL.Path[len("/users/"):])
    if err != nil {
        http.Error(w, "Invalid user ID", http.StatusBadRequest)
        return
    }
 
    mu.Lock()
    defer mu.Unlock()
 
    user, ok := users[id]
    if !ok {
        http.NotFound(w, r)
        return
    }
 
    json.NewEncoder(w).Encode(user)
}
 
func main() {
    http.HandleFunc("/users", createUser)
    http.HandleFunc("/users/", getUser)
 
    log.Println("Starting server on :8080")
    log.Fatal(http.ListenAndServe(":8080", nil))
}

Этот код запускает HTTP-сервер на порту 8080. Он обрабатывает два маршрута:

- POST /users: Создает нового пользователя. Ожидает JSON с именем пользователя в теле запроса. - GET /users/{id}: Возвращает данные пользователя по его ID.

Для тестирования сервера вы можете использовать инструменты вроде curl или Postman. Например, для создания пользователя:

curl -X POST -H "Content-Type: application/json" -d '{"name":"John Doe"}' http://localhost:8080/users

И для получения пользователя по ID:

curl http://localhost:8080/users/1

Это базовый пример, и в реальных приложениях вам потребуется добавить дополнительную логику, например, для обработки ошибок, валидации данных и безопасности.

PQ VPS сервера в 28+ странах.