Как разобрать встроенные структуры из yaml - PullRequest
0 голосов
/ 07 декабря 2018

Я хотел бы демонтировать yaml, используя встраиваемые структуры, в основном для DRY:

package main

import (
    "fmt"
    "log"
    "gopkg.in/yaml.v2"
)

type Person struct {
    Name string
}

type Employee struct {
    Person
    Number string
}

func (c *Employee) Dump() {
    d, err := yaml.Marshal(c)
    if err != nil {
        log.Fatalf("error: %v", err)
    }
    fmt.Printf("--- dump:\n%s\n\n", string(d))
}

func main() {
    s := `
name: john
number: one
`

    c := &Employee{}
    err := yaml.Unmarshal([]byte(s), c)
    if err != nil {
        log.Fatalf("Unmarshal: %v", err)
    }

    c.Dump()
}

Это приводит к:

--- dump:
person:
  name: ""
number: one

Как внедренный человек может быть разобранным?

1 Ответ

0 голосов
/ 07 декабря 2018

Вы должны добавить встроенный тег, например:

type Employee struct {
    Person `yaml:",inline"`
    Number string
}

Это выдаст:

--- dump:
name: john
number: one

Здесь обсуждение этого вопроса

Надеюсь, что эта помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...