Я пытаюсь разобрать файл yaml для небольшого проекта, который у меня есть.Parsing YAML in Go: карта в списке
Цель состоит в том, чтобы информация о приложении отображалась в файле конфигурации, включая адрес в файле сервера, в случае необходимости его обновления. Он находится в конфигурационном файле для удобства «редактирования».
Главное, что есть некоторые тесты на подключение, которые необходимо выполнить, прежде чем приложение действительно запустится. Я пытаюсь разобрать этот файл. Это выглядит следующим образом:
conf.yaml
app:
version: "1"
name: MySuperApp
configLocation: http://configaddress
test_url:
-
name: siteName1
url: http://siteUrl1
-
name: siteName2
url: http://siteUrl2
proxy_port: 5678
я писал, я могу получить то, что в приложении: а не то, что в test_url:
package main
import (
"fmt"
"io/ioutil"
"path/filepath"
"gopkg.in/yaml.v2"
)
type AppInfo struct {
Name string `yaml:"name"`
Version string `yaml:"version"`
}
type Config struct {
App AppInfo `yaml:"app"`
}
type TestUrl struct {
Name string `yaml:"name"`
Url string `yaml:"url"`
ProxyPort string `yaml:"proxy_port,omitempty"`
}
type TestUrls struct {
ATest []TestUrl `yaml:"test_url"`
}
func main() {
filename, _ := filepath.Abs("./config/conf.yaml")
yamlFile, err := ioutil.ReadFile(filename)
if err != nil {
panic(err)
}
var config Config
err = yaml.Unmarshal(yamlFile, &config)
if err != nil {
panic(err)
}
var test TestUrls
err = yaml.Unmarshal(yamlFile, &test)
if err != nil {
panic(err)
}
fmt.Println("Application : ", config.App.Name,"\nVersion : ", config.App.Version)
fmt.Println(test)
}
На выходе я получаю:
Application : MySuperApp
Version : 1
{[]}
Что мне не хватает?
0 Данные файла и кода работают довольно хорошо. '' 'Приложение: MySuperApp Версия: 1 {[{siteName1 http: // siteUrl1} {siteName2 http: // siteUrl2 5678}]} ' '' – sadlil