1 回答
TA贡献1775条经验 获得超11个赞
您可以使用该库的HasZero
方法来检查结构中是否存在缺失值。这将返回 true 或 false,具体取决于结构是否完全填充。
但如果您特别需要知道缺少哪个字段,则需要检查该值是否为 nil,如下例所示。
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
}
如果您需要专门返回错误,则操场示例
- 1 回答
- 0 关注
- 169 浏览
添加回答
举报