我是编程新手,我正在浏览与 Go 一起使用的不同代码的示例。我有一个简单的两个函数程序,它解析 XML 表并返回搜索项:
package main
import (
"encoding/xml"
"os"
"strings"
)
type document struct {
Title string `xml:"title"`
URL string `xml:"url"`
Text string `xml:"abstract"`
ID int
}
func LoadDocuments(path string) ([]document, error) {
f, err := os.Open(path)
if err != nil {
return nil, err
}
defer f.Close()
dec := xml.NewDecoder(f)
dump := struct {
Documents []document `xml:"doc"`
}{}
if err := dec.Decode(&dump); err != nil {
return nil, err
}
docs := dump.Documents
for i := range docs {
docs[i].ID = i
}
return docs, nil
}
func SearchData(docs []document, term string) []document {
var r []document
for _, doc := range docs {
if strings.Contains(doc.Text, term) {
r = append(r, doc)
}
}
return r
}
如何让 SearchData 函数返回一个 doc.URL 实例而不是整个文档块?