我期望生成的 yaml 檔案包含被寫入為空物件的服務器陣列。我該如何解決這個問題,以便將服務器陣列寫入 yaml 檔案?
代碼:
package configwritter
import (
"fmt"
"io/ioutil"
"log"
"gopkg.in/yaml.v2" //go get gopkg.in/yaml.v2
)
type Server struct {
name string `yaml:"name"`
ip string `yaml:"ip"`
}
type Confugration struct {
Name string
Servers []Server
}
func WriteConfig() {
config := Confugration{
Name: "Test",
Servers: []Server{
{"server1", "10.0.0.100"},
{"server1", "10.0.0.101"},
},
}
data, err := yaml.Marshal(&config)
if err != nil {
log.Fatal(err)
}
err2 := ioutil.WriteFile("config.yaml", data, 0)
if err2 != nil {
log.Fatal(err2)
}
fmt.Println("data written")
}
輸出:
name: Test
servers:
- {}
- {}
uj5u.com熱心網友回復:
Server結構上的欄位似乎需要公開才能讓yaml模塊讀取它們。
從Marshal檔案:
結構欄位僅在匯出時才會編組(首字母大寫)
您可以通過更改型別定義來解決此問題,Server以便匯出欄位(具有大寫名稱),如下所示:
type Server struct {
Name string `yaml:"name"`
IP string `yaml:"ip"`
}
帶有輸出config.yaml檔案:
name: Test
servers:
- name: server1
ip: 10.0.0.100
- name: server1
ip: 10.0.0.101
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/362242.html
