日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747


io.Copy

func Copy(dst Writer, src Reader) (written int64, err error)

用于在 io.Reader 或 io.Writer 之間復(fù)制數(shù)據(jù),接受兩個參數(shù),一個 Writer 和一個 Reader。從 Reader 中讀取數(shù)據(jù)并寫入到 Writer 中,直到無法再從 Reader 中讀取到任何數(shù)據(jù)(EOF)或發(fā)生錯誤,返回被復(fù)制的字節(jié)數(shù)和任何發(fā)生的錯誤信息。簡單的使用示例如下:

package mAIn

import (
	"fmt"
	"io"
	"os"
)

func main() {
	src, err := os.Open("src.txt")
	if err != nil {
		panic(err)
	}
	defer src.Close()

	dst, err := os.Create("dst.txt")
	if err != nil {
		panic(err)
	}
	defer dst.Close()

	written, err := io.Copy(dst, src)
	if err != nil {
		panic(err)
	}
	fmt.Printf("Copied %d bytesn", written)
}

io.CopyBuffer

func CopyBuffer(dst Writer, src Reader, buf []byte) (written int64, err error)

用于在 io.Reader 和 io.Writer 之間緩沖復(fù)制數(shù)據(jù),與 io.Copy 函數(shù)不同的是,使用 io.CopyBuffer 可以手動控制緩沖區(qū)的大小。如果 buf 為 nil,則分配一個;如果長度為零,則會觸發(fā) panic。io.CopyBuffer 避免了 io.Copy 可能出現(xiàn)的大內(nèi)存使用問題,因為可以使用具有固定大小的緩沖區(qū),所以可以更好地控制內(nèi)存使用、提高性能。簡單使用示例如下:

package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	src, err := os.Open("src.txt")
	if err != nil {
		panic(err)
	}
	defer src.Close()

	dst, err := os.Create("dst.txt")
	if err != nil {
		panic(err)
	}
	defer dst.Close()

	buf := make([]byte, 4)
	written, err := io.CopyBuffer(dst, src, buf)
	if err != nil {
		panic(err)
	}
	fmt.Printf("Copied %d bytesn", written)
}

io.CopyN

func CopyN(dst Writer, src Reader, n int64) (written int64, err error)

用于從 io.Reader 中讀取指定數(shù)量的字節(jié)數(shù)并寫入 io.Writer 中。與 io.Copy 函數(shù)不同的是,會從源 io.Reader 中讀取 n 個字節(jié)并寫入到目標 io.Writer 中,從源讀入了指定數(shù)量的字節(jié)數(shù)據(jù)后就會停止。簡單使用示例如下:

package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	src, err := os.Open("file.txt")
	if err != nil {
		panic(err)
	}
	defer src.Close()

	dst, err := os.Create("dst.txt")
	if err != nil {
		panic(err)
	}
	defer dst.Close()

	written, _ := io.CopyN(dst, src, 5)
	fmt.Printf("Copied %d bytesn", written)
}

io.LimitReader

func LimitReader(r Reader, n int64) Reader

從 io.Reader 中讀取數(shù)據(jù),最多返回 n 個字節(jié)。如果讀取數(shù)據(jù)時提前達到了這個限制,io.Reader 就會返回 io.EOF 錯誤(表示已經(jīng)讀取到了流的末尾)。簡單使用示例如下:

package main

import (
	"fmt"
	"io"
	"strings"
)

func main() {
	data := "Hello, World!"
	reader := strings.NewReader(data)
	limit := int64(5)
	limitedReader := io.LimitReader(reader, limit)
	buf := make([]byte, limit)
	limitedReader.Read(buf)
	fmt.Printf("%sn", buf) // 輸出: Hello
}

io.ReadAll

func ReadAll(r Reader) ([]byte, error)

用于讀取指定 io.Reader 中所有數(shù)據(jù),不限制讀取數(shù)據(jù)的大小。簡單使用示例如下:

package main

import (
	"fmt"
	"io"
	"strings"
)

func main() {
	r := strings.NewReader("路多辛的博客,分享后端領(lǐng)域知識與經(jīng)驗")
	b, err := io.ReadAll(r)
	if err != nil {
		panic(err)
	}
	fmt.Println(string(b))
}

io.ReadAtLeast

func ReadAtLeast(r Reader, buf []byte, min int) (n int, err error)

用于從 io.Reader 中讀取至少指定數(shù)量字節(jié)的數(shù)據(jù),會嘗試從 io.Reader 中讀取至少 min 個字節(jié),如果數(shù)據(jù)不足,會返回一個無法讀取請求的字節(jié)數(shù)錯誤。簡單使用示例如下:

package main

import (
	"fmt"
	"io"
	"log"
	"strings"
)

func main() {
	r := strings.NewReader("路多辛的博客,分享后端領(lǐng)域知識與經(jīng)驗")
	buf := make([]byte, 18)
	if _, err := io.ReadAtLeast(r, buf, 6); err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%sn", buf)


	shortBuf := make([]byte, 3)
	if _, err := io.ReadAtLeast(r, shortBuf, 4); err != nil {
		fmt.Println("error:", err)
	}


	longBuf := make([]byte, 64)
	if _, err := io.ReadAtLeast(r, longBuf, 64); err != nil {
		fmt.Println("error:", err)
	}
}

io.ReadFull

func ReadFull(r Reader, buf []byte) (n int, err error)

用于從 io.Reader 中讀取 len(buf)個字節(jié)到 buf 中。如果數(shù)據(jù)不足,會返回一個無法讀取請求的字節(jié)數(shù)的錯誤。簡單使用示例如下:

package main

import (
	"fmt"
	"io"
	"strings"
)

func main() {
	r := strings.NewReader("路多辛的博客,分享后端領(lǐng)域知識與經(jīng)驗")

	buf := make([]byte, 18)
	if _, err := io.ReadFull(r, buf); err != nil {
		panic(err)
	}
	fmt.Println(string(buf))

	longBuf := make([]byte, 64)
	if _, err := io.ReadFull(r, longBuf); err != nil {
		panic(err)
	}
}

分享到:
標簽:Golang
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定