Как в BeeGo в качестве конфиг файла использовать yaml?

Для использования YAML в качестве конфигурационного файла в BeeGo нам понадобится две вещи: пакет go-yaml и небольшая настройка в файле bee.yaml.

Сначала давайте установим пакет go-yaml следующей командой:

go get gopkg.in/yaml.v2

Теперь, когда у нас есть пакет go-yaml, мы можем использовать YAML в нашем конфигурационном файле. Создайте файл bee.yaml в корневом каталоге вашего проекта и заполните его следующим образом:

appname: MyApp
httpport: 8080
runmode: dev
copyrequestbody: true
enablegzip: false

databases:
  - name: default
    driver: mysql
    connection: username:password@tcp(localhost:3306)/dbname
    openconnections: 100
    idleconnections: 30

Теперь давайте настроим нашу программу для чтения файла bee.yaml и использования его в качестве конфигурации. Вот пример:

package main

import (
	"fmt"
	"io/ioutil"
	"log"

	"gopkg.in/yaml.v2"
)

// Configuration структура для хранения конфигурации
type Configuration struct {
	AppName      string      `yaml:"appname"`
	HTTPPort     int         `yaml:"httpport"`
	RunMode      string      `yaml:"runmode"`
	CopyRequestBody bool     `yaml:"copyrequestbody"`
	EnableGzip   bool        `yaml:"enablegzip"`
	Databases    []Database  `yaml:"databases"`
}

// Database структура для хранения настроек базы данных
type Database struct {
	Name             string `yaml:"name"`
	Driver           string `yaml:"driver"`
	Connection       string `yaml:"connection"`
	OpenConnections  int    `yaml:"openconnections"`
	IdleConnections  int    `yaml:"idleconnections"`
}

func main() {
	data, err := ioutil.ReadFile("bee.yaml")
	if err != nil {
		log.Fatalf("Ошибка чтения файла конфигурации: %v", err)
	}

	config := Configuration{}
	err = yaml.Unmarshal(data, &config)
	if err != nil {
		log.Fatalf("Ошибка анмаршалинга конфигурации: %v", err)
	}

	fmt.Printf("App Name: %sn", config.AppName)
	fmt.Printf("HTTP Port: %dn", config.HTTPPort)
	fmt.Printf("Run Mode: %sn", config.RunMode)
	fmt.Printf("Copy Request Body: %vn", config.CopyRequestBody)
	fmt.Printf("Enable Gzip: %vn", config.EnableGzip)

	fmt.Println("Databases:")
	for _, db := range config.Databases {
		fmt.Printf("  - Name: %sn", db.Name)
		fmt.Printf("    Driver: %sn", db.Driver)
		fmt.Printf("    Connection: %sn", db.Connection)
		fmt.Printf("    Open Connections: %dn", db.OpenConnections)
		fmt.Printf("    Idle Connections: %dn", db.IdleConnections)
	}
}

Теперь мы можем запустить эту программу, и она прочитает файл bee.yaml и выведет его содержимое на экран.

Вот и все! Теперь вы знаете, как использовать YAML в качестве конфигурационного файла в BeeGo.