1 回答

TA貢獻2065條經驗 獲得超14個贊
沒有官方的 yaml 庫,但是gopkg.in/yaml.v2是一個不錯的選擇。要解組給定的 yaml,您可以定義結構并將 yaml 標簽添加到屬性中。
通過為網橋和 vlan 使用映射并為端口使用數組,您可以毫無問題地解組數據。
當您使用地圖時,請記住迭代地圖并不能保證返回元素的順序。
該程序將解組您給定的結構:
package main
import (
"fmt"
"log"
yaml "gopkg.in/yaml.v2"
)
var data = `
controlling_bridge_1:
ip: "1.1.1.1"
ports: ["1","2"]
vlans:
vlan01:
name: "vlan1"
tag: 1001
ports: ["1"]
ip: "2.2.2.2"
vlan02:
name: "vlan02"
tag: 1002
ports: ["3", "4"]
ip: "3.3.3.1"
controlling_bridge_2:
ip: "1.1.1.1"
ports: ["1","2"]
vlans:
vlan01:
name: "vlan1"
tag: 1001
ports: ["1"]
ip: "2.2.2.2"
vlan02:
name: "vlan02"
tag: 1002
ports: ["3", "4"]
ip: "3.3.3.1"
`
type Bridge struct {
IP string `yaml:"ip"`
Ports []string `yaml:"ports"`
Vlans map[string]Vlan
}
type Vlan struct {
Name string `yaml:"name"`
Tag string `yaml:"tag"`
Ports []string `yaml:"ports"`
IP string `yaml:"ip"`
}
func main() {
bridges := map[string]Bridge{}
err := yaml.Unmarshal([]byte(data), &bridges)
if err != nil {
log.Fatalf("error: %v", err)
}
fmt.Printf("%+v\n", bridges)
}
- 1 回答
- 0 關注
- 118 瀏覽
添加回答
舉報