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 语言标准库中最常用的标识符是什么?】欲知详情如何 , 且听下回分解 。
推荐阅读
- 在使用mysql数据库时,遇到重复数据怎么处理?
- 数据库JSON怎么改?一个SQL函数让你的操作瞬间高大上
- 数据库连接池的原理
- 厂家积压货清仓处理 全国回收积压库存
- 文后分别附成人和孩子良好睡眠的标准 关于睡眠的3个真相
- 长期大量回收各种库存服装 库存商品回收公司
- 面试很有用哦 SQL常用语句总结
- 将ETL工具整合到您的数据仓库策略中
- 文具库存表 文具属于可回收物品吗
- 工作十年以上辞退赔偿标准