最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go中各種newreader和newbuffer的使用總結(jié)

 更新時間:2023年11月21日 09:54:47   作者:絳洞花主敏明  
這篇文章主要為大家詳細介紹了Go語言中各種newreader和newbuffer的使用的相關(guān)資料,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以了解下

一、bytes.NewBuffer和bytes.NewReader

func main() {
    var byteArr []byte
    buf := bytes.NewBuffer(byteArr)
    buf.Write([]byte("今天不錯"))
 
    fmt.Println(buf.String())
}
package main
 
import (
    "bytes"
    "fmt"
)
 
func main() {
    data := []byte("路多辛的所思所想")
    reader := bytes.NewReader(data)
 
    // 讀取整個字節(jié)數(shù)組
    buf := make([]byte, len(data))
    _, err := reader.Read(buf)
    if err != nil {
        fmt.Println("Read failed:", err)
    }
    fmt.Println("Bytes read:", buf)
 
    // 讀取字節(jié)切片的一部分
    part := make([]byte, 3)
    _, err = reader.Read(part)
    if err != nil {
        fmt.Println("Read failed:", err)
    }
    fmt.Println("Bytes read:", part)
 
    // 查找并讀取字節(jié)切片中的某個字符
    offset, err := reader.Seek(6, 0)
    if err != nil {
        fmt.Println("Seek failed:", err)
    }
    ch, size, err := reader.ReadRune()
    if err != nil {
        fmt.Println("ReadRune failed:", err)
    }
    fmt.Printf("Read %c with size %d at offset %d\n", ch, size, offset)
}

二、strings.NewReader(沒有newWriter)

    r := strings.NewReader("abcdefghijklmn")
    fmt.Println(r.Len())   // 輸出14  初始時,未讀長度等于字符串長度
    var buf []byte
    buf = make([]byte, 5)
    readLen, err := r.Read(buf)
    fmt.Println("讀取到的長度:", readLen) //讀取到的長度5
    if err != nil {
        fmt.Println("錯誤:", err)
    }
    fmt.Println(buf)            //adcde
    fmt.Println(r.Len())        //9   讀取到了5個 剩余未讀是14-5
    fmt.Println(r.Size())       //14   字符串的長度

三、bufio.NewReader和bufio.NewWriter

package main
import (
    "fmt"
    "io"
    "os"
)
func main() {
    fmt.Println("嗨客網(wǎng)(www.haicoder.net)")
    fileName := "C:/haicoder.txt"
    file, err := os.Open(fileName)
    if err != nil{
        fmt.Println("Read file err, err =", err)
        return
    }
    defer file.Close()
    var chunk []byte
    buf := make([]byte, 1024)
    for{
        n, err := bufio.NewReader(buf)
        if err != nil && err != io.EOF{
            fmt.Println("read buf fail", err)
            return
        }
        //說明讀取結(jié)束
        if n == 0 {
            break
        }
        //讀取到最終的緩沖區(qū)中
        chunk = append(chunk, buf[:n]...)
    }
    fmt.Println("File Content =", string(chunk))
}
package main
import (
    "bufio"
    "fmt"
    "io/ioutil"
    "os"
)
func main() {
    fmt.Println("嗨客網(wǎng)(www.haicoder.net)")
    var(
        fileName = "C:/haicoder.txt"
        content = "Hello HaiCoder"
        file *os.File
        err error
    )
    //使用追加模式打開文件
    file, err = os.OpenFile(fileName, os.O_APPEND, 0666)
    if err != nil{
        fmt.Println("Open file err =", err)
        return
    }
    defer file.Close()
    writer := bufio.NewWriter(file)
    //寫入文件
    n, err := writer.Write([]byte(content))
    if err != nil{
        fmt.Println("Write file err =", err)
        return
    }
    fmt.Println("Write file success, n =", n)
    writer.Flush()
    //讀取文件
    fileContent, err := ioutil.ReadFile(fileName)
    if err != nil{
        fmt.Println("Read file err =", err)
        return
    }
    fmt.Println("Read file success =", string(fileContent))
}

總結(jié):

1、使用的newbuffer,緩存區(qū)是用來存儲內(nèi)容的,并不能確定具體需要的內(nèi)存大小,因此newbuffer的參數(shù)為不固定的[]byte{};

2、使用的newreader,緩存區(qū)應(yīng)該是有數(shù)值的,此時是用來讀取其中的內(nèi)容。

到此這篇關(guān)于Go中各種newreader和newbuffer的使用總結(jié)的文章就介紹到這了,更多相關(guān)Go reader buffer內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 重學(xué)Go語言之錯誤處理與異常機制詳解

    重學(xué)Go語言之錯誤處理與異常機制詳解

    Go語言的開發(fā)者顯然覺得?try-catch被濫用了,因此?Go不支持使用?try-catch語句捕獲異常處理,那么,Go語言是如何定義和處理程序的異常呢,下面我們就來看看吧
    2023-08-08
  • go格式“占位符”輸入輸出 類似python的input

    go格式“占位符”輸入輸出 類似python的input

    這篇文章主要介紹了go格式“占位符”, 輸入輸出,類似python的input,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • GO語言中err接口及defer延遲異常處理分析

    GO語言中err接口及defer延遲異常處理分析

    這篇文章主要為大家介紹了GO語言中err接口及defer延遲異常處理的示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • 解決golang在import自己的包報錯的問題

    解決golang在import自己的包報錯的問題

    這篇文章主要介紹了解決golang在import自己的包報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 詳解Golang中單元測試的使用

    詳解Golang中單元測試的使用

    單元測試是檢測你寫的一個函數(shù)是否具備安全性的一次檢測,這篇文章主要為大家詳細介紹了Golang中單元測試的具體使用,希望對大家有所幫助
    2023-07-07
  • go中slice淺拷貝和深拷貝的實現(xiàn)

    go中slice淺拷貝和深拷貝的實現(xiàn)

    本文主要介紹了go中slice淺拷貝和深拷貝的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • Go基礎(chǔ)語法的使用

    Go基礎(chǔ)語法的使用

    本文主要介紹了Go基礎(chǔ)語法的使用,包括標識符、關(guān)鍵字、行分隔符、var關(guān)鍵字、:=運算符、空格、注釋、package、import、輸入輸出、運算符、條件控制、循環(huán)等,感興趣的可以了解一下
    2023-11-11
  • 使用go求冪的幾種方法小結(jié)

    使用go求冪的幾種方法小結(jié)

    這篇文章主要介紹了使用go求冪的幾種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • go語言中time包的各種函數(shù)總結(jié)

    go語言中time包的各種函數(shù)總結(jié)

    時間和日期是我們編程中經(jīng)常會用到的,下面這篇文章主要給大家介紹了關(guān)于go語言中time包的各種函數(shù)總結(jié)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • Golang熔斷器的開發(fā)過程詳解

    Golang熔斷器的開發(fā)過程詳解

    Golang熔斷器是一種用于處理分布式系統(tǒng)中服務(wù)調(diào)用的故障保護機制,它可以防止故障服務(wù)的連鎖反應(yīng),提高系統(tǒng)的穩(wěn)定性和可靠性,本文將給大家詳細的介紹一下Golang熔斷器的開發(fā)過程,需要的朋友可以參考下
    2023-09-09

最新評論

南木林县| 三原县| 法库县| 三穗县| 开江县| 共和县| 大悟县| 长葛市| 台山市| 南江县| 锡林郭勒盟| 黔西| 鄂伦春自治旗| 宁国市| 临洮县| 阳山县| 清河县| 广水市| 泰州市| 桂林市| 且末县| 磐安县| 田东县| 日土县| 昭苏县| 塘沽区| 武邑县| 塔城市| 瑞丽市| 满洲里市| 厦门市| 五指山市| 惠州市| 禹州市| 武乡县| 兴安盟| 鲜城| 高密市| 上思县| 江阴市| 新民市|