Ich lerne Golang durch das Buch „The Go Programming Language“. In Kapitel 5, Abschnitt 5.3 (Mehrere Rückgabewerte) Übung 5.5 muss ich eine Funktion countwordandimages
,该函数从 (golang.org/x/ net) 包中,并计算 html 文件中的单词和图像数量,我实现了以下函数,但出于某种原因,我收到每个 words
和 images
implementieren, die 0 von a zurückgibt variabler Wert .
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 }
Ich versuche zu vermeiden, Rückgabevariablen-Tupel ((int, int)
) in Funktionen zu benennen. (int, int)
)。
使用 c.nextsibling
前进到下一个兄弟,而不是 n.nextsibling
Verwenden Sie c.nextsibling
, um zum nächsten Geschwister zu gelangen, statt n.nextsibling
:
for c := n.FirstChild; c != nil; c = c.NextSibling { ⋮
Das obige ist der detaillierte Inhalt vonWas stimmt mit meiner in go geschriebenen rekursiven Funktion nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!