我想做一個非常簡單的SSH通訊錄程序。獲取有關ssh地址的一些信息並將它們存儲在yaml文檔中。我在做部分工作是爲了瞭解一下Go,並且遇到一個小問題。我可以序列數據,並把文檔轉換成一個文件,但我得到這個錯誤,當我嘗試讀回:
yaml: control characters are not allowed
Go-yaml控制字符是不允許的錯誤
我不知道這是什麼錯誤消息意味着,谷歌搜索並沒有屈服任何有用的結果。有任何想法嗎?
這是我使用來組織數據結構:
type EntriesList struct {
SSHEntries []SSHEntry `yaml:"sshentries"`
}
type SSHEntry struct {
Name string `yaml:"name"`
Command SSHCmd `yaml:"command"`
}
type SSHCmd struct {
Addr string `yaml:"addr"`
Port int `yaml:"port"`
Uname string `yaml:"uname"`
}
它使我的數據轉換成格式爲:
---
entrieslist:
- name: entry1
command:
addr: somewhere
port: 22
uname: someone
- name: entry2 ... etc
我用YAML驗證選中此^^和這是合法的YAML。 這裏是我的功能來讀取文件:
// CONF is the path to the file
func readConf(CONF string) *EntriesList {
configFile := openConfigFile(CONF)
defer configFile.Close()
buffer := make([]byte, 512, 512)
_, err := configFile.Read(buffer)
check(err)
var entries EntriesList
err = yaml.Unmarshal(buffer, &entries)
data, _ := yaml.Marshal(entries)
fmt.Println(string(data))
return &entries
}
現貨!我通過'io.Reader'讀取了我的數據,所以我將緩衝區分割爲'[0:count]'(count是'Read'函數報告的字節數)。 –