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 關注
- 223 瀏覽
添加回答
舉報