首先,需要定义一个用于读取yaml文件的结构体。可以使用如下结构体:
type FileScanRules struct {
Rules []*FileScanRule `yaml:"rules"`
}
然后,定义读取规则的函数:
func readRulesFromFile(filename string) (*FileScanRules, error) {
data, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
var rules FileScanRules
err = yaml.Unmarshal(data, &rules)
if err != nil {
return nil, err
}
return &rules, nil
}
接下来,就可以调用这个函数,并将读取到的规则转换成FileScanRule类型:
rules, err := readRulesFromFile(“rule.yaml”) if err != nil {
log.Fatal(err)
}
for _, rule := range rules.Rules {
// 对每个规则进行处理
}