我正在用“The Go Programming Language“这本书学习Golang,在第5章5. 3节(多个返回值)练习5.5我必须实现函数countWordAndImages
,它从(golang.org/x/net)包,并计算HTML文件中的字数和图像数,我实现了以下函数,但由于某种原因,我收到了0个值用于每个words
和images
返回变量。
func countWordsAndImages(n *html.Node) (words, images int) {
if n.Type == html.TextNode {
words += wordCount(n.Data)
} else if n.Type == html.ElementNode && n.Data == "img" { // if tag is img on element node
images++
}
for c := n.FirstChild; c != nil; c = n.NextSibling {
tmp_words, tmp_images := countWordsAndImages(c)
words, images = words+tmp_words, images+tmp_images
}
return words, images
}
func wordCount(s string) int {
n := 0
scan := bufio.NewScanner(strings.NewReader(s))
scan.Split(bufio.ScanWords)
for scan.Scan() {
n++
}
return n
}
我试图避免在函数((int, int)
)中命名返回变量元组。
1条答案
按热度按时间llew8vvj1#
使用
c.NextSibling
前进到下一个同级,而不是n.NextSibling
:https://go.dev/play/p/cm51yG8Y7Ry