Вы можете использовать этот library HasZero
метод, чтобы проверить, есть ли какие-либо пропущенные значения в структуре. Это вернет истину или ложь в зависимости от того, заполнена структура или нет. Пожалуйста, посмотрите игровую площадку пример , чтобы получить представление.
Но если вам необходимо указать, какое поле пропущено, нужно проверить, равно ли это значение нулю, как в примере ниже.
package main
import (
"fmt"
"errors"
"gopkg.in/yaml.v2"
)
type TestStruct struct {
FieldA string `yaml:"a"`
FieldB string `yaml:"b"`
}
func main() {
input := []byte(`{a: 1}`)
var output TestStruct
if err := output.ParseFromFile(input); err != nil {
fmt.Println(err)
}
fmt.Println(output)
}
func (output *TestStruct) ParseFromFile(data []byte) error {
if err := yaml.Unmarshal(data, output); err != nil {
return err
}
if output.FieldA == "" {
return errors.New("Blank Field A")
}
if output.FieldB == "" {
return errors.New("Blank Field B")
}
return nil
}
Детская площадка пример , если вам нужно специально вернуть ошибку