- 常见的问题,声明了map,但是没有初始化就使用,编译会报nil map error
- 多个goroutine同时读写一个map,运行时会报concurrent write and read map error,此时必须要加锁或者使用go1.9的sync.Map
- 程序中需要实现一个传递二进制文件的功能,第一版代码使用一个byte切片不断进行读写复制,出现了一个问题,即生成的dst文件大小与源文件不一样,导致对方无法解析这个二进制文件了。 第二版把buf的地方改为了io.Copy,如注释所示,解决了这个问题。
srcFile, err := os.Open("src")
if err != nil {
fmt.Println("src error ", err)
return
}
defer srcFile.Close()
dstFile, err := os.Create("dst")
if err != nil {
fmt.Println("dest error ", err)
return
}
defer dstFile.Close()
//_, err = io.Copy(dstFile, srcFile)
buf := make([]byte, 1024)
for {
n, _ := srcFile.Read(buf)
if n == 0 {
break
}
dstFile.Write(buf)
}
网友评论