func getAllCertainDivs(className string, idName string, htmlTag *HtmlTag, matchingDivs *[]*HtmlTag) {
fmt.Println(htmlTag.Class)
if htmlTag.XMLName.Local == "div" {
if htmlTag.Class == className && htmlTag.Id == idName {
*matchingDivs = append(*matchingDivs, htmlTag)
}
}
for _, tag := range htmlTag.ChildTags {
getAllCertainDivs(className, idName, &tag, matchingDivs)
}
}
在上面的函数中,如您所见,我将切片的指针传递给getAllCertainDivs函数。在某一点,一个HtmlTag指针被推入切片matchingDivs。在append我检查了matchingDiv slice 的内容之后,在让函数再次递归调用自己之前。然后在 if where 的下方append,该函数递归调用自身一次。我停下fmt.Println(htmlTag.Class)来matchingDivs再次检查slice的内容。而且内容和之前完全不一样。
只有一个append,内容怎么改?是否golang使用相同的HtmlTag指针,每次我将它传递给下一个递归调用?
繁花如伊
相关分类