J'apprends le golang à travers le livre "le langage de programmation go", au chapitre 5, section 5.3 (Valeurs de retour multiples) Exercice 5.5, je dois implémenter une fonction countwordandimages
,该函数从 (golang.org/x/ net) 包中,并计算 html 文件中的单词和图像数量,我实现了以下函数,但出于某种原因,我收到每个 words
和 images
qui renvoie 0 d'un Valeur variable .
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 }
J'essaie d'éviter de nommer des tuples de variables de retour ((int, int)
) dans les fonctions. (int, int)
)。
使用 c.nextsibling
前进到下一个兄弟,而不是 n.nextsibling
Utilisez c.nextsibling
pour passer au frère suivant au lieu de n.nextsibling
:
for c := n.FirstChild; c != nil; c = c.NextSibling { ⋮
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!