将UAML字段的多个值解析为列表,然后在GOLANG中对其进行迭代

I have the following yaml file with me:

nodes: ["1.1.1.1","127.0.0.1","2.2.2.2"]
emailto: ["sample@sample.com","sample@sample.com"]

I want to open the YAML file, iterate over the IPs one by one and do some certain action. If there is an error, then it should automatically take the next ip and perform the same function. I am having trouble as to how to save the IPs to a list or how to iterate in GOLANG.

Also, I have to send an email based to the e-mail IDs present in the YAML file. Which package in GO is used for that and how to do it like SMTPLIB in Python.

It looks like there are three parts to your question:

1. See gopkg.in/yaml.v2 for YAML parsing

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

type Doc struct {
  Nodes  []string `yaml:"nodes"`
  Emails []string `yaml:"emailto"`
}

// Parse the YAML document.
doc := Doc{}
err := yaml.Unmarshal(yamlbytes, &doc)
if err != nil {
  log.Fatalf("FATAL: could not parse YAML file: %s", err)
}

2. Example of iterating using range, calling a function, and handling errors

// Iterate over each node and do something, handling errors as needed.
for _, node := range doc.Nodes {
  err := DoSomethingWithNode(node)
  if err != nil {
    log.Printf("ERROR: failed to handle node %q: %s", node, err)
  } else {
    log.Printf("OK: successfully handled node %q.", node)
  }
}

3. See the builtin net/smtp package for sending email

See the package example for a complete illustration.