Для использования 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.