У меня есть следующая структура
type Sitemap struct {
XMLName xml.Name `xml:"urlset"`
Namespace string `xml:"xmlns,attr"`
Schema string `xml:"xmlns:xsi,attr"`
SchemaLocation string `xml:"xsi:schemaLocation,attr"`
Root *URLItem
}
type URLItem struct {
XMLName xml.Name `xml:"url"`
Loc string `xml:"loc"`
LastMod string `xml:"lastmod,omitempty"`
Urls []*URLItem
}
func (s *Sitemap) AddURL(key string, url string) {
node, found := findURLItemRecursive(s.Root, key)
if found {
node.Urls = append(node.Urls, &URLItem{Loc: url})
}
}
func findURLItemRecursive(urlItem *URLItem, key string) (*URLItem, bool) {
if urlItem.Loc == key {
return urlItem, true
}
for _, urlItem := range urlItem.Urls {
return findURLItemRecursive(urlItem, key)
}
return nil, false
}
, где key
- это родительский URL-адрес, а url
- это дочерний URL-адрес, связанный с родительским URL-адресом, из-за того, что в нем найдены дочерние элементы.страница родителя.
По неизвестным причинам findURLItemRecursive
глючит.
Проблема в том, что я не могу прикрепить больше UrlItem
(s) на втором уровне.
Я имею в виду, я могу создать элемент Root
, создающий фрагменты Urls
дляэлемент Root
, но тогда я не могу создать вложенные фрагменты.Так что я не могу пройти больше, чем первый уровень.
Мне интересно, есть ли в функции findURLItemRecursive
какие-либо явные ошибки в Go, которые я не могу обнаружить.