标签 - golang
这两天参加Gopher China 2015大会, 感受颇多. 第一是震惊, golang在中国竟然已如此之火, golang在中国的应用已有如此成功的案例, golang在中国竟有这么多牛人. 第二是失落, 因为我发现, 我正与golang圈远去, golang有这么多牛人, 我竟不是其中一个. 先来说说这次会议的体验 这次会议总体非常成功, 各个讲师分享的都是干货,
在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 ,
fmt.Scanln()不是读取一行, 而是遇到换行就停止,
Scanln is similar to Scan, but stops scanning at a newline and after the final item there must be a newline or EOF.
举个例子:
var i, j, k int
fmt.Scanln(&i, &j, &k)
fmt.Println(i, j, k) 输入1, 2 回车后程序结束. 如果换成fmt.Scan()还会让输入的.
使用stdin与read