我在go中创建的递归函数有什么问题?

iecba09b  于 2023-01-22  发布在  Go
关注(0)|答案(1)|浏览(101)

我正在用“The Go Programming Language“这本书学习Golang,在第5章5. 3节(多个返回值)练习5.5我必须实现函数countWordAndImages,它从(golang.org/x/net)包,并计算HTML文件中的字数和图像数,我实现了以下函数,但由于某种原因,我收到了0个值用于每个wordsimages返回变量。

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))中命名返回变量元组。

llew8vvj

llew8vvj1#

使用c.NextSibling前进到下一个同级,而不是n.NextSibling

for c := n.FirstChild; c != nil; c = c.NextSibling {
    ⋮

https://go.dev/play/p/cm51yG8Y7Ry

相关问题