我在Golang有一个简单的项目,我用它来学习这门语言。我正在开发的“服务”的主要目的是运行一个守护进程来保存作为XML公开的URL。这样我就可以“生成”我自己的read-later服务。到现在为止还挺好 :)。您可以在此处找到该项目:https://github.com/rogierlommers/readinglist-golang
我正在使用Gin-Gonic作为服务html的框架。我已经设法读取了一个xml文件,解组它但现在我想在这个“东西”中添加一些新数据。换句话说:我认为我需要将其转换为切片,但我不知道如何管理它。
F.e。端点r.GET("/add/:url")
应使用函数util.AddRecord将新url插入切片。但是如何?
[编辑] 基本上我的问题可以在这个游乐场中查看:http://play.golang.org/p/Vx0s02E12R
答案 0 :(得分:2)
在您对问题的评论中,您问:
我首先需要创建一个切片,对吧?
答案是肯定的,但你已经在ReadingListRecords
结构中有了一个切片:
type ReadingListRecords struct {
XMLName xml.Name `xml:"records"`
Records []Record `xml:"record"`
}
因此,您只需在该切片上调用append并传入一个新的记录结构:
records.Records = append(record.Records, Record{xml.Name{"", "record"}, 4, "url", "2015-03-09 00:00:00"})
您还可以展开ReadingListRecords
结构的API,以包含一个方便的Append
功能:
type RecordSet interface {
Append(record Record) error
}
func (records *ReadingListRecords) Append(record Record) error {
newRecords := append(records.Records, record)
if newRecords == nil {
return errors.New("Could not append record")
} else {
records.Records = newRecords
return nil
}
}
添加界面似乎是一个好主意,因为您希望在多个应用程序中将其用作服务。