[UMU 学 golang](2) 升级 1.5 + 优化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了[UMU 学 golang](2) 升级 1.5 + 优化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1860字,纯文字阅读大概需要3分钟。
内容图文
安装 1.5 时,直接覆盖 1.4.2,结果不能用了,报错:imports runtime: C source files not allowed whennotusing cgo or SWIG
解决方法是删掉 go 1.5……然后修复安装一遍。
优化:1、加了计时功能,纯属蛋疼。2、学到一个不占空间的 struct{},map[string]bool 改为 map[string]struct{}。
// UMU @ 2015-08-17 11:30 // Last update: 2015-08-21 17:40 package main import ( "bufio" "fmt" "os" "path" "path/filepath" "time" ) func isSourceFile(ext string) bool { var kSourceFileExts = []string{".c", ".cc", ".cpp", ".h", ".hpp", ".go", ".java"} for _, r := range kSourceFileExts { if r == ext { return true } } return false } func main() { if len(os.Args) < 2 { fmt.Println("Usage: ", os.Args[0], "[file or folder]...") return } start := time.Now() files := make(map[string]struct{}) lines := 0 for _, r := range os.Args { fi, err := os.Stat(r) if err == nil || os.IsExist(err) { if fi.IsDir() { AddDirectory(r, files) } else { AddFile(r, files) } } } for file, _ := range files { l := CountLine(file) lines += l fmt.Println(file, l) } fmt.Printf("Total lines: %d, cost %fs\n", lines, timeElapsed(start)) } func AddDirectory(name string, files map[string]struct{}) { filepath.Walk(name, func(path string, fi os.FileInfo, err error) error { if nil == fi { return err } if fi.IsDir() { return nil } AddFile(path, files) return nil }) } func AddFile(name string, files map[string]struct{}) { ext := path.Ext(name) if isSourceFile(ext) { path, err := filepath.Abs(name) if err == nil { _, exists := files[path] if exists { fmt.Println("Duplicated", path) } else { files[path] = struct{}{} fmt.Println("Add", path) } } } } func CountLine(path string) (num int) { f, err := os.Open(path) if nil != err { return } defer f.Close() s := bufio.NewScanner(f) for s.Scan() { num += 1 } return } func timeElapsed(start time.Time) float64 { dis := time.Since(start).Seconds() return dis }
原文:http://my.oschina.net/umu618/blog/495626
内容总结
以上是互联网集市为您收集整理的[UMU 学 golang](2) 升级 1.5 + 优化全部内容,希望文章能够帮你解决[UMU 学 golang](2) 升级 1.5 + 优化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。