Golang 中的 IO 包詳解:指定讀寫對象和偏移量接口
io.ReaderFrom
type ReaderFrom interface {
ReadFrom(r Reader) (n int64, err error)
}
接口中定義了一個 ReadFrom 方法,常見用法是將實現了該接口的對象(比如文件或網絡連接)的數據讀取到一個實現了 io.Writer 接口的對象。
一些標準庫中的文件類型,在實現了 io.ReadFrom 接口后,可以通過 io.Copy 函數方便的將數據從源文件拷貝到目的文件。
具體使用方法可參考標準庫中實現該接口的類型,例如在 os.File 類型中:
func (f *File) ReadFrom(r io.Reader) (n int64, err error)
io.WriterTo
type WriterTo interface {
WriteTo(w Writer) (n int64, err error)
}
接口中定義了一個 WriteTo 方法,常用于將實現了該接口的對象(比如字節數組或文件)的數據寫入到一個實現了io.Reader接口的對象中。
一些標準庫中的文件類型,在實現了 io.WriterTo 接口后,可以通過 io.Copy 函數方便的將數據從源文件拷貝到目的文件。
具體使用方法可參考標準庫中實現該接口的類型,例如在 bytes.Buffer 類型中:
func (b *Buffer) WriteTo(w io.Writer) (n int64, err error)
io.ReaderAt
type ReaderAt interface {
ReadAt(p []byte, off int64) (n int, err error)
}
接口中定義了一個 ReadAt 方法,常用于從實現了該接口的對象(比如文件或網絡連接)中讀取指定位置的數據。
ReadAt 方法允許從指定偏移量位置開始讀取數據,并將讀取的數據存入指定的緩沖區中,并返回實際讀取的字節數。使用該接口可實現高效的隨機讀取操作。
具體使用方法可參考標準庫中實現該接口的類型,例如在 os.File 類型中:
func (f *File) ReadAt(b []byte, off int64) (n int, err error)
當在 os.File 中調用 ReadAt 方法時,file 被視為一個支持隨機存取的字節數組,并可以使用該方法在其中進行讀取操作,其中 b 代表讀取的字節數組,off 代表字節偏移量。
io.WriterAt
type WriterAt interface {
WriteAt(p []byte, off int64) (n int, err error)
}
接口中定義了一個 WriteAt 方法,常用于向實現了該接口的對象(比如文件或網絡連接)中指定位置寫入數據。
WriteAt 方法允許向指定偏移量位置開始寫入數據,這個方法可以高效地實現隨機寫入操作。
具體使用方法可參考標準庫中實現該接口的類型,例如在 os.File 類型中:
func (f *File) WriteAt(b []byte, off int64) (n int, err error)
當在 os.File 中調用 WriteAt 方法時,file 被視為一個支持隨機存取的字節數組,并可以使用該方法在其中進行寫入操作,其中 b 代表要寫入的字節數組,off 代表字節偏移量。