在Java/Python中, 文件打开后,默认是覆写,但golang默认是不覆盖的 最初以为这些代码会”无则创建,有则覆盖” f, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE, os.ModePerm)这样得到f, 如果不执行 f.Truncate(0)就f.Write就只是覆盖当前位置的内容,并不会截断文件. 事实上需要这样写 f, err := os.OpenFile(dst, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, os.ModePerm)
因为leanote在github.com上的包有点大, 所以 go get github.com/leanote/leanote/app 会很慢, 这个会执行几分钟或更长, 不知道的朋友还以为卡死了. 找了下 go get 没有一个选项可以输出进度的, 于是决定修改golang源码(别以为很有技术含量, 还不是go代码?). 看了下golang的源码 src/cmd/go 下是go命令的源码, 其中, get.go是go get命令的代码, build.go 是go build的代码. 刚开始走了点弯路, 想着改变get.go来显示进度, 无果之后想了下, go get 其实就是调用git ,