博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[UMU 学 golang](2) 升级 1.5 + 优化
阅读量:5861 次
发布时间:2019-06-19

本文共 1879 字,大约阅读时间需要 6 分钟。

  安装 1.5 时,直接覆盖 1.4.2,结果不能用了,报错:imports runtime: C source files not allowed when not using 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:40package mainimport (	"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}

转载于:https://my.oschina.net/umu618/blog/495626

你可能感兴趣的文章
初学Juery
查看>>
后台页面框架
查看>>
工作之命令小总结(5):ss命令
查看>>
redis_3.0.7_sds.c_dsRemoveFreeSpace()
查看>>
IIS网站出错--未能加载文件或程序集“Agronet.Controls”或它的某一个依赖项。拒绝访问...
查看>>
Java 类的认识(一)
查看>>
ansible学习三(命令和模块)
查看>>
实数的连续性
查看>>
windows 任务计划
查看>>
相对重要性
查看>>
Android在OnCreate中获取控件的宽度和高度
查看>>
EXTJS 4.2 Panel复制
查看>>
IEEE: 安全领域中的大数据分析
查看>>
jQuery控制回车使表单内控件获得焦点
查看>>
Java 动态代理机制分析及扩展,第 1 部分
查看>>
Linux中的shell
查看>>
我的友情链接
查看>>
如何使用TCP/IP与服务器进行通信-一个简单的聊天程序
查看>>
转载 - linux面试题:删除一个目录下的所有文件,但保留一个指定文件
查看>>
spring定时器----JobDetailBean
查看>>