Go 语言标准库中最常用的标识符是什么?( 二 )


counts := make(map[string]int)// [code removed for clarity]for { _, tok, lit := s.Scan() if tok == token.EOF { break } if tok == token.IDENT { counts[lit]++ }}// [为了阅读清晰 , 移除部分代码]type pair struct { s string n int}pairs := make([]pair, 0, len(counts))for s, n := range counts { pairs = Append(pairs, pair{s, n})rm -f }sort.Slice(pairs, func(i, j int) bool { return pairs[i].n > pairs[j].n})for i := 0; i < len(pairs) && i < 5; i++ { fmt.Printf("%6d %sn", pairs[i].n, pairs[i].s)}为了不影响理解 , 有些代码被删除了 。你可以在这里获取完整的源码 。
哪些是最常用的标识符?我们来用这个程序分析一下 github.com/golang/go 上的代码:
$ go install github.com/campoy/justforfunc/24-ast/scanner$ scanner ~/go/src/**/*.go 82163 v 46584 err 44681 Args 43371 t 37717 x在短标识符里 , 最常用的标识符是字母 v  。那我们修改下代码来计算一些长标识符:
for s, n := range counts { if len(s) >= 3 { pairs = append(pairs, pair{s, n}) }}再来一次:
$ go install github.com/campoy/justforfunc/24-ast/scanner$ scanner ~/go/src/**/*.go 46584 err 44681 Args 36738 nil 25761 true 21723 AddArg果不其然 , err 和 nil 是最常见的标识符 , 毕竟每个程序中都有 if err != nil 这样的语句 。但 Args 出现频度这么高怎么回事?
【Go 语言标准库中最常用的标识符是什么?】欲知详情如何 , 且听下回分解 。


推荐阅读