欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go寫文件后出現(xiàn)大量NUL字符問題解決

 更新時(shí)間:2023年12月05日 10:16:24   作者:ProblemTerminator  
本文主要介紹了go寫文件后出現(xiàn)大量NUL字符問題解決,由于每次寫的時(shí)候設(shè)置的長度都是64,在某次不足64時(shí),byte切片空余位置被填充為空字符,下面就來介紹一下如何解決

背景

寫文件完成后發(fā)現(xiàn):

size明顯也和正常的不相等。

看看修改前

buf := make([]byte, 64)
buffer := bytes.NewBuffer(buf)

// ...其它邏輯使得buffer有值

// 打開即將要寫入的文件,不存在則創(chuàng)建
f, err := os.OpenFile(filepath, os.O_CREATE|os.O_TRUNC, 0666)

writer := bufio.NewWriter(f)
n, err := io.Copy(writer, buffer)
err = writer.Flush()

修改后

主要是前兩句,替換為

buffer := bytes.NewBuffer([]byte{})

buffer := &bytes.Buffer{}

下面的代碼一樣。

原因

每次寫的時(shí)候設(shè)置的長度都是64,在某次不足64時(shí),byte切片空余位置被填充為空字符;至于到底是文件前、文件中、文件末尾等什么地方出現(xiàn)該字符,就看每次填充到buf是怎么填充的了。

如果不是用io.Copy,比如用的是如下方式進(jìn)行寫操作: 

_, err = writer.Write(bs[:n])

則Write方法盡量寫成bs[:n],這里的n是本次要寫入的實(shí)際長度,而不是直接的bs或bs[:],即重點(diǎn)是控制長度,否則都可能產(chǎn)生此問題。

到此這篇關(guān)于go寫文件后出現(xiàn)大量NUL字符問題解決的文章就介紹到這了,更多相關(guān)go出現(xiàn)NUL字符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang繼承模擬實(shí)例詳解

    Golang繼承模擬實(shí)例詳解

    這篇文章主要介紹了Golang繼承模擬方法,結(jié)合實(shí)例形式分析了Go語言實(shí)現(xiàn)繼承的原理與相關(guān)操作技巧,需要的朋友可以參考下
    2016-07-07
  • Golang優(yōu)雅關(guān)閉channel的方法示例

    Golang優(yōu)雅關(guān)閉channel的方法示例

    Goroutine和channel是Go在“并發(fā)”方面兩個(gè)核心feature,下面這篇文章主要給大家介紹了關(guān)于Golang如何優(yōu)雅關(guān)閉channel的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考解決,下面來一起看看吧。
    2017-11-11
  • go循環(huán)依賴的最佳解決方案

    go循環(huán)依賴的最佳解決方案

    ? import cycle not allowed(循環(huán)依賴不被允許)相信作為每一個(gè)golang語言使用研發(fā),都遇到過這個(gè)令人頭痛的報(bào)錯(cuò),循環(huán)依賴是指兩個(gè)或多個(gè)模塊之間互相依賴,形成了一個(gè)閉環(huán)的情況,本文會(huì)結(jié)合部分案例對(duì)解決方案進(jìn)行講解,需要的朋友可以參考下
    2023-10-10
  • Golang實(shí)現(xiàn)常見排序算法的示例代碼

    Golang實(shí)現(xiàn)常見排序算法的示例代碼

    現(xiàn)在的面試真的是越來越卷了,算法已經(jīng)成為了面試過程中必不可少的一個(gè)環(huán)節(jié),你如果想進(jìn)稍微好一點(diǎn)的公司,算法是必不可少的一個(gè)環(huán)節(jié)。本文為大家準(zhǔn)備了Golang實(shí)現(xiàn)常見排序算法的示例代碼,需要的可以參考一下
    2022-05-05
  • 使用Go語言解決Scan空格結(jié)束輸入問題

    使用Go語言解決Scan空格結(jié)束輸入問題

    這篇文章主要為大家介紹了使用Go語言來解決Scan空格結(jié)束輸入問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • golang使用go test輸出單元測試覆蓋率的方式

    golang使用go test輸出單元測試覆蓋率的方式

    單元測試覆蓋率是衡量代碼質(zhì)量的一個(gè)重要指標(biāo),重要的代碼文件覆蓋率應(yīng)該至少達(dá)到80%以上,Java 可以通過JaCoCo 統(tǒng)計(jì)覆蓋率,那么go 項(xiàng)目如何進(jìn)行代碼覆蓋率測試呢,本文將給大家詳細(xì)的介紹一下golang使用go test輸出單元測試覆蓋率的方式,需要的朋友可以參考下
    2024-02-02
  • Go Mongox輕松實(shí)現(xiàn)MongoDB的時(shí)間字段自動(dòng)填充

    Go Mongox輕松實(shí)現(xiàn)MongoDB的時(shí)間字段自動(dòng)填充

    這篇文章主要為大家詳細(xì)介紹了Go語言如何使用 mongox 庫,在插入和更新數(shù)據(jù)時(shí)自動(dòng)填充時(shí)間字段,從而提升開發(fā)效率并減少重復(fù)代碼,需要的可以參考下
    2025-02-02
  • Go語言拼接URL路徑的三種方法

    Go語言拼接URL路徑的三種方法

    本文主要介紹了Go語言拼接URL路徑的三種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 淺析Golang中字符串拼接問題

    淺析Golang中字符串拼接問題

    Go的字符串是一個(gè)不可改變的數(shù)據(jù)結(jié)構(gòu),這和其他語言如JAVA,C++等的設(shè)定很類似.總體來說,有如下五種拼接方式,下面我們將論述各種方式的性能問題,以及如何選擇
    2023-04-04
  • 詳解go語言的并發(fā)

    詳解go語言的并發(fā)

    這篇文章主要介紹了go語言并發(fā)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用golang,感興趣的朋友可以了解下
    2021-03-03

最新評(píng)論