我正在尝试制作一个非常简单的 ssh 地址簿程序。获取有关 ssh 地址的一些信息并将它们存储在 yaml 文档中。我这样做的部分原因是为了了解 Go 并且遇到了一个小问题。我可以序列化数据并将文档放入文件中,但是当我尝试读回它时出现此错误:
yaml: control characters are not allowed
我不确定此错误消息的含义,谷歌搜索没有产生任何有用的结果。有任何想法吗?
这些是我用来组织数据的结构:
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
}
浮云间
冉冉说
相关分类