美文网首页
问题汇总

问题汇总

作者: 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