我正在透過《the go 程式語言》一書學習golang,在第5 章第5.3 節(多個回傳值)練習5.5 中,我必須實作函數countwordandimages
,該函數從(golang.org/x/ net) 套件中,併計算html 檔案中的單字和圖像數量,我實作了以下函數,但出於某種原因,我收到每個words
和images
傳回變數的0 值。
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)
)。
使用c.nextsibling
前進到下一個兄弟,而不是n.nextsibling
:
for c := n.FirstChild; c != nil; c = c.NextSibling { ⋮
//m.sbmmt.com/link/e7364a5abd2a860cf8e33b114369b92b
以上是我用 go 寫的遞歸函數有什麼問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!