美文网首页
问题汇总

问题汇总

作者: ShutLove | 来源:发表于2018-01-27 10:20 被阅读0次
  1. 常见的问题,声明了map,但是没有初始化就使用,编译会报nil map error
  2. 多个goroutine同时读写一个map,运行时会报concurrent write and read map error,此时必须要加锁或者使用go1.9的sync.Map
  3. 程序中需要实现一个传递二进制文件的功能,第一版代码使用一个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)
    }

相关文章

网友评论

      本文标题:问题汇总

      本文链接:https://www.haomeiwen.com/subject/tcqnaxtx.html