開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Go (プログラミング言語)
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES) (Alan A.A. Donovan(著)、Brian W. Kernighan(著)、柴田 芳樹(翻訳)、丸善出版)の第5章(関数)、5.2(再帰)、練習問題5.2の解答を求めてみる。
コード
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, "findlinks: %v\n", err)
os.Exit(1)
}
for data, n := range visit(make(map[string]int), doc) {
fmt.Printf("%v: %v\n", data, n)
}
}
func visit(count map[string]int, n *html.Node) map[string]int {
if n == nil {
return count
}
if n.Type == html.ElementNode {
count[n.Data]++
}
count = visit(count, n.FirstChild)
count = visit(count, n.NextSibling)
return count
}
入出力結果(cmd(コマンドプロンプト)、Terminal)
$ ./fetch https://golang.org | go run sample2.go svg: 1 path: 2 pre: 1 select: 1 option: 8 title: 2 input: 1 button: 1 span: 5 br: 3 head: 1 script: 8 a: 22 body: 1 div: 34 form: 1 textarea: 2 iframe: 1 html: 1 meta: 3 link: 2 $ ./fetch https://www.mkamimura.com | go run sample2.go meta: 21 noscript: 1 img: 66 ul: 23 head: 1 header: 1 aside: 2 textarea: 1 script: 31 p: 54 h2: 10 li: 305 div: 434 select: 1 gcse:searchbox-only: 2 title: 1 ins: 5 br: 47 input: 3 link: 10 style: 2 h3: 18 ol: 3 strong: 1 footer: 1 html: 1 h1: 1 span: 149 a: 660 abbr: 18 option: 122 form: 1 body: 1 $ ./fetch https://www.jp-kamimura.com | go run sample2.go script: 7 title: 1 link: 3 header: 1 li: 20 span: 1 meta: 1 div: 1 footer: 1 nav: 1 html: 1 body: 1 gcse:searchbox-only: 1 style: 1 h2: 1 a: 21 head: 1 ul: 1 $ ./fetch https://www.example.com | go run sample2.go p: 2 a: 1 head: 1 meta: 3 style: 1 body: 1 html: 1 title: 1 div: 1 h1: 1 $
0 コメント:
コメントを投稿