歡迎光臨
我們一直在努力

Go程式設計語言課後習題答案-第五章(基本資料)

  • 函式宣告
  • 遞迴
  • 多返回值
  • 錯誤
  • 函式變數
  • 匿名函式
  • 變長函式
  • 延遲函式呼叫
  • 宕機
  • 恢復

練習5.1

改變findlinks程式,使用遞迴呼叫visit(而不是迴圈)遍歷n.FirstChild連結串列

  • 可怕的遞迴ヽ(*。>Д<)o゜可怕
  • 迴圈還挺好理解的,可是改成遞迴真。。。不好理解
  • 本題就修改一句就好了
return visit(visit(links, n.FirstChild), n.NextSibling)

練習5.2

寫一個函式,用於統計HTML文件樹內所有的元素個數,如p,div,span等

  • 將傳入的slice修改爲map,其他不變
package main

import (
	"fmt"
	"os"

	"golang.org/x/net/html"
)

func main() {
	doc, err := html.Parse(os.Stdin)
	if err != nil {
		fmt.Fprintf(os.Stderr, "findelems: %vn", err)
		os.Exit(1)
	}
	elements := map[string]int{}
	visit(elements, doc)
	for elem, count := range elements {
		fmt.Printf("%st%dn", elem, count)
	}
}

func visit(emap[string]int, n *html.Node) {
	if n.Type == html.ElementNode {
		e[n.Data]++
	}
	for c := n.FirstChild; c != nil; c = c.NextSibling {
		visit(e, c)
	}
}

練習5.3

寫一個函式,用於輸出HTML文件樹種所有文字節點的內容.但不包括 台中醫美推薦 越南暗黑團推薦