亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Go中各種newreader和newbuffer的使用總結

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

一、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
        }
        //說明讀取結束
        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))
}

總結:

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

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

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

相關文章

  • 淺析Go語言中的逃逸分析

    淺析Go語言中的逃逸分析

    逃逸分析算是go語言的特色之一,所以這篇文章小編就來和大家聊聊為什么不應該過度關注go語言的逃逸分析,感興趣的小伙伴可以跟隨小編一起了解一下
    2024-10-10
  • 如何通過go自定義一個分頁插件

    如何通過go自定義一個分頁插件

    分頁是我們?nèi)粘i_發(fā)中經(jīng)常會遇到的一個需求,下面這篇文章主要給大家介紹了關于如何通過go自定義一個分頁插件的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • Go標準庫http與fasthttp服務端性能對比場景分析

    Go標準庫http與fasthttp服務端性能對比場景分析

    這篇文章主要介紹了Go標準庫http與fasthttp服務端性能比較,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Go定時器的三種實現(xiàn)方式示例詳解

    Go定時器的三種實現(xiàn)方式示例詳解

    這篇文章主要為大家介紹了Go定時器的三種實現(xiàn)方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 使用client go實現(xiàn)自定義控制器的方法

    使用client go實現(xiàn)自定義控制器的方法

    本文我們來使用client-go實現(xiàn)一個自定義控制器,通過判斷service的Annotations屬性是否包含ingress/http,如果包含則創(chuàng)建ingress,如果不包含則不創(chuàng)建,對client go自定義控制器相關知識感興趣的朋友一起看看吧
    2022-05-05
  • 詳解如何在Golang中監(jiān)聽多個channel

    詳解如何在Golang中監(jiān)聽多個channel

    這篇文章主要為大家詳細介紹了如何在Golang中實現(xiàn)監(jiān)聽多個channel,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-03-03
  • 瞅一眼就能學會的GO并發(fā)編程使用教程

    瞅一眼就能學會的GO并發(fā)編程使用教程

    隨著互聯(lián)網(wǎng)的普及,互聯(lián)網(wǎng)用戶人數(shù)原來越多,這對系統(tǒng)的性能帶來了巨大的挑戰(zhàn)。這個時候就需要并發(fā)編程了,本文為大家整理了詳細的GO并發(fā)編程使用教程,讓你看完就能學會
    2023-02-02
  • Go實現(xiàn)凱撒密碼加密解密

    Go實現(xiàn)凱撒密碼加密解密

    這篇文章主要為大家介紹了Go實現(xiàn)凱撒密碼加密解密示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 輕松入門:使用Golang開發(fā)跨平臺GUI應用

    輕松入門:使用Golang開發(fā)跨平臺GUI應用

    Golang是一種強大的編程語言,它的并發(fā)性和高性能使其成為開發(fā)GUI桌面應用的理想選擇,Golang提供了豐富的標準庫和第三方庫,可以輕松地創(chuàng)建跨平臺的GUI應用程序,通過使用Golang的GUI庫,開發(fā)人員可以快速構建具有豐富用戶界面和交互功能的應用程序,需要的朋友可以參考下
    2023-10-10
  • 關于golang?struct?中的?slice?無法原子賦值的問題

    關于golang?struct?中的?slice?無法原子賦值的問題

    這篇文章主要介紹了為什么?golang?struct?中的?slice?無法原子賦值的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01

最新評論