bufio

package
v1.22.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 26, 2024 License: MIT Imports: 2 Imported by: 0

Documentation

Overview

Package bufio はバッファードI/Oを実装しています。io.Readerまたはio.Writerオブジェクトをラップして、 バッファリングやテキストI/Oのための支援を提供する別のオブジェクト(ReaderまたはWriter)を作成します。

Index

Examples

Constants

View Source
const (
	// MaxScanTokenSizeは、トークンをバッファリングするために使用される最大サイズです
	// ユーザーが [Scanner.Buffer] で明示的なバッファを提供しない限り。
	// 実際の最大トークンサイズは、バッファに改行などを含める必要があるため、より小さくなる場合があります。
	MaxScanTokenSize = 64 * 1024
)

Variables

View Source
var (
	ErrInvalidUnreadByte = errors.New("bufio: invalid use of UnreadByte")
	ErrInvalidUnreadRune = errors.New("bufio: invalid use of UnreadRune")
	ErrBufferFull        = errors.New("bufio: buffer full")
	ErrNegativeCount     = errors.New("bufio: negative count")
)
View Source
var (
	ErrTooLong         = errors.New("bufio.Scanner: token too long")
	ErrNegativeAdvance = errors.New("bufio.Scanner: SplitFunc returns negative advance count")
	ErrAdvanceTooFar   = errors.New("bufio.Scanner: SplitFunc returns advance count beyond input")
	ErrBadReadCount    = errors.New("bufio.Scanner: Read returned impossible count")
)

Scannerが返すエラー。

View Source
var ErrFinalToken = errors.New("final token")

ErrFinalTokenは、特別なセンチネルエラー値です。 スキャンをエラーなしで停止することを示すために、Split関数によって返されることを意図しています。 このエラーと一緒に配信されるトークンがnilでない場合、トークンは最後のトークンです。

この値は、処理を早期に停止する必要がある場合や、最後の空のトークン(nilトークンとは異なる)を配信する必要がある場合に役立ちます。 カスタムエラー値で同じ動作を実現できますが、ここで提供することで整理されたコードになります。 この値の使用例については、emptyFinalTokenの例を参照してください。

Functions

func ScanBytes added in v1.1.0

func ScanBytes(data []byte, atEOF bool) (advance int, token []byte, err error)

ScanBytesは、各バイトをトークンとして返す Scanner の分割関数です。

func ScanLines added in v1.1.0

func ScanLines(data []byte, atEOF bool) (advance int, token []byte, err error)

ScanLinesは、改行マーカー以降のテキストが除かれた、 Scanner のスプリット関数です。 返される行は空になる場合もあります。 改行マーカーは1つのオプションのキャリッジリターンに続いて1つの必須の改行からなります。 正規表現の表記では、 `\r?\n`です。 入力の最後の非空行は改行がない場合でも返されます。

func ScanRunes added in v1.1.0

func ScanRunes(data []byte, atEOF bool) (advance int, token []byte, err error)

ScanRunesは、 Scanner に対して使用される分割関数で、それぞれのUTF-8エンコードされたルーンをトークンとして返します。返されるルーンのシーケンスは、文字列としての入力を範囲ループで処理した場合と同等です。つまり、誤ったUTF-8エンコーディングはU+FFFD = "\xef\xbf\xbd"に変換されます。Scanインターフェースのため、クライアントは正しくエンコードされた置換ルーンとエンコーディングエラーを区別することが不可能です。

func ScanWords added in v1.1.0

func ScanWords(data []byte, atEOF bool) (advance int, token []byte, err error)

ScanWordsは、スペースで区切られたテキストの Scanner のための分割関数です。周囲のスペースは削除され、空の文字列は返されません。スペースの定義はunicode.IsSpaceによって設定されます。

Types

type ReadWriter

type ReadWriter struct {
	*Reader
	*Writer
}

ReadWriterは ReaderWriter へのポインタを保存します。 io.ReadWriter を実装します。

func NewReadWriter

func NewReadWriter(r *Reader, w *Writer) *ReadWriter

NewReadWriterはrとwにディスパッチする新しい ReadWriter を割り当てます。

type Reader

type Reader struct {
	// contains filtered or unexported fields
}

Readerはio.Readerオブジェクトに対してバッファリングを実装します。

func NewReader

func NewReader(rd io.Reader) *Reader

NewReaderはデフォルトサイズのバッファを持つ新しい Reader を返します。

func NewReaderSize

func NewReaderSize(rd io.Reader, size int) *Reader

NewReaderSizeは、バッファの最低限のサイズが指定された新しい Reader を返します。 もし引数のio.Readerが既に十分なサイズの Reader であれば、それは基本となる Reader を返します。

func (*Reader) Buffered

func (b *Reader) Buffered() int

Bufferedは現在のバッファから読み取ることができるバイト数を返します。

func (*Reader) Discard added in v1.5.0

func (b *Reader) Discard(n int) (discarded int, err error)

Discard は次の n バイトをスキップし、スキップしたバイト数を返します。

もし Discard が n バイト未満をスキップした場合、エラーも返します。 もし 0 <= n <= b.Buffered() のとき、Discard は io.Reader の下の方から読み取らずに必ず成功することが保証されています。

func (*Reader) Peek

func (b *Reader) Peek(n int) ([]byte, error)

Peek returns the next n bytes without advancing the reader. The bytes stop being valid at the next read call. If Peek returns fewer than n bytes, it also returns an error explaining why the read is short. The error is ErrBufferFull if n is larger than b's buffer size.

Calling Peek prevents a Reader.UnreadByte or Reader.UnreadRune call from succeeding until the next read operation.

func (*Reader) Read

func (b *Reader) Read(p []byte) (n int, err error)

Readはデータをpに読み込みます。 pに読み込まれたバイト数を返します。 バイトは基礎となる Reader のReadから最大1つ取り出されますので、nはlen(p)より少ない場合があります。 len(p)バイトを正確に読み取るには、io.ReadFull(b, p)を使用してください。 基礎となる Reader がio.EOFで非ゼロの数を返す可能性がある場合、このReadメソッドも同様です。詳細は io.Reader ドキュメントを参照してください。

func (*Reader) ReadByte

func (b *Reader) ReadByte() (byte, error)

ReadByteは1バイトを読み取って返します。 バイトが利用できない場合、エラーを返します。

func (*Reader) ReadBytes

func (b *Reader) ReadBytes(delim byte) ([]byte, error)

ReadBytesは入力内のデリミタの最初の出現まで読み取り、 データとデリミタを含むスライスを返します。 ReadBytesがデリミタを見つける前にエラーが発生した場合、 エラーが発生する前に読み取られたデータとエラー自体(通常はio.EOF)を返します。 Returned dataがデリミタで終わっていない場合、ReadBytesはerr != nilを返します。 簡単な使用のためには、Scannerがより便利です。

func (*Reader) ReadLine

func (b *Reader) ReadLine() (line []byte, isPrefix bool, err error)

ReadLineは低レベルの行読み取りプリミティブです。ほとんどの呼び出し元は、 Reader.ReadBytes('\n') または Reader.ReadString('\n') を使用するか、 Scanner を使用する必要があります。

ReadLineは、改行文字を含まない1行だけを返そうとします。もし行がバッファーに対して長すぎる場合、isPrefixが設定され、行の先頭が返されます。それ以降の行は、将来の呼び出しで返されます。最後のフラグメントを返す際には、isPrefixはfalseになります。返されるバッファーは、次のReadLine呼び出しまでの間のみ有効です。ReadLineは、nilではない行を返すか、エラーを返すか、どちらかを返しますが、両方を返すことはありません。

ReadLineから返されるテキストには、行末の("\r\n"または"\n")は含まれません。入力が最後の行末で終わっている場合、特定の表示やエラーは与えられません。ReadLineの後に Reader.UnreadByte を呼び出すと、常に最後に読み取られたバイト(おそらく行末に属する文字)がアンリードされます。ただし、そのバイトがReadLineによって返された行の一部でない場合でもです。

func (*Reader) ReadRune

func (b *Reader) ReadRune() (r rune, size int, err error)

ReadRuneは、1つのUTF-8エンコードされたユニコード文字を読み込み、 そのルーンとバイトサイズを返します。エンコードされたルーンが無効な場合は、1バイトを消費し、 サイズが1のunicode.ReplacementChar(U+FFFD)を返します。

func (*Reader) ReadSlice

func (b *Reader) ReadSlice(delim byte) (line []byte, err error)

ReadSliceは入力内の最初のデリミタの出現まで読み取り、バッファ内のバイトを指すスライスを返します。 バイトは次の読み取り時には無効になります。 ReadSliceがデリミタを見つける前にエラーに遭遇した場合、バッファ内のすべてのデータとエラー自体(通常はio.EOF)を返します。 バッファがデリミタなしで満杯になると、ReadSliceは ErrBufferFull エラーで失敗します。 ReadSliceから返されるデータは次のI/O操作によって上書きされるため、ほとんどのクライアントは Reader.ReadBytes またはReadStringを代わりに使用すべきです。 ReadSliceは、lineの終了がデリミタでない場合にのみerr!= nilを返します。

func (*Reader) ReadString

func (b *Reader) ReadString(delim byte) (string, error)

ReadStringは、入力内で最初のデリミタが現れるまで読み込み、デリミタを含むデータの文字列を返します。 ReadStringがデリミタを見つける前にエラーに遭遇した場合、エラー自体(通常はio.EOF)とエラーが発生する前に読み取ったデータを返します。 ReadStringは、返されたデータの最後がデリミタで終わっていない場合、err != nilを返します。 単純な使用法の場合は、Scannerがより便利です。

func (*Reader) Reset added in v1.2.0

func (b *Reader) Reset(r io.Reader)

Resetはバッファに保持されたデータを破棄し、すべての状態をリセットし、 バッファリーダーをrから読み取るように切り替えます。 Reader のゼロ値に対してResetを呼び出すと、内部バッファがデフォルトのサイズに初期化されます。 b.Reset(b)(つまり、Reader を自身にリセットする)は何もしません。

func (*Reader) Size added in v1.10.0

func (b *Reader) Size() int

Sizeはバイト単位での基礎バッファのサイズを返します。

func (*Reader) UnreadByte

func (b *Reader) UnreadByte() error

UnreadByteは最後のバイトを未読状態に戻します。直前に読み込まれたバイトのみが未読状態に戻すことができます。

UnreadByteは、Reader に対して最後に呼び出されたメソッドが読み込み操作ではない場合にエラーを返します。特に、 Reader.PeekReader.Discard 、および Reader.WriteTo は読み込み操作とはみなされません。

func (*Reader) UnreadRune

func (b *Reader) UnreadRune() error

UnreadRuneは最後のルーンを戻します。もし、 Reader に最も最近呼び出されたメソッドが Reader.ReadRune でない場合、 Reader.UnreadRune はエラーを返します。(この点で、 Reader.UnreadByte よりも厳格です。Reader.UnreadByte はどの読み取り操作からも最後のバイトを戻します。)

func (*Reader) WriteTo added in v1.1.0

func (b *Reader) WriteTo(w io.Writer) (n int64, err error)

WriteToはio.WriterToを実装します。 これは基礎となる ReaderReader.Read メソッドを複数回呼び出すことがあります。 基礎となるreaderが Reader.WriteTo メソッドをサポートしている場合、 これはバッファリングせずに基礎となる Reader.WriteTo を呼び出します。

type Scanner added in v1.1.0

type Scanner struct {
	// contains filtered or unexported fields
}

Scannerは、改行で区切られたテキストの行のファイルなどのデータを読み取るための便利なインターフェースを提供します。Scanメソッドの連続した呼び出しにより、ファイルの「トークン」を順番にステップし、トークン間のバイトをスキップします。トークンの仕様は SplitFunc 型の分割関数によって定義されます。デフォルトの分割関数は、入力を行に分割し、行末の文字を取り除きます。Scanner.Split 関数は、ファイルを行、バイト、UTF-8エンコードされたルーン、スペースで区切られた単語にスキャンするために、このパッケージで定義されています。クライアントは代わりにカスタムの分割関数を提供することもできます。

スキャンは、EOF、最初のI/Oエラー、または Scanner.Buffer に収まりきらないトークンで不可回復的に停止します。 スキャンが停止すると、リーダーは最後のトークンを超えて任意の距離を進めている可能性があります。 エラー処理や大きなトークンの制御が必要なプログラム、またはリーダーで連続的なスキャンを実行する必要があるプログラムは、 代わりに bufio.Reader を使用する必要があります。

Example (Custom)

ScanWordsをラップして構築されたカスタム分割関数を使用するScannerを使用して、 32ビットの10進数入力を検証します。

package main

import (
	"github.com/shogo82148/std/bufio"
	"github.com/shogo82148/std/fmt"
	"github.com/shogo82148/std/strconv"
	"github.com/shogo82148/std/strings"
)

func main() {
	// 人工的な入力ソース。
	const input = "1234 5678 1234567901234567890"
	scanner := bufio.NewScanner(strings.NewReader(input))
	// 既存のScanWords関数をラップして、カスタム分割関数を作成します。
	split := func(data []byte, atEOF bool) (advance int, token []byte, err error) {
		advance, token, err = bufio.ScanWords(data, atEOF)
		if err == nil && token != nil {
			_, err = strconv.ParseInt(string(token), 10, 32)
		}
		return
	}
	// スキャン操作のための分割関数を設定します。
	scanner.Split(split)
	// 入力を検証します。
	for scanner.Scan() {
		fmt.Printf("%s\n", scanner.Text())
	}

	if err := scanner.Err(); err != nil {
		fmt.Printf("Invalid input: %s", err)
	}
}
Output:

1234
5678
Invalid input: strconv.ParseInt: parsing "1234567901234567890": value out of range
Example (EarlyStop)

Use a Scanner with a custom split function to parse a comma-separated list with an empty final value but stops at the token "STOP".

package main

import (
	"github.com/shogo82148/std/bufio"
	"github.com/shogo82148/std/bytes"
	"github.com/shogo82148/std/fmt"
	"github.com/shogo82148/std/os"
	"github.com/shogo82148/std/strings"
)

func main() {
	onComma := func(data []byte, atEOF bool) (advance int, token []byte, err error) {
		i := bytes.IndexByte(data, ',')
		if i == -1 {
			if !atEOF {
				return 0, nil, nil
			}
			// If we have reached the end, return the last token.
			return 0, data, bufio.ErrFinalToken
		}
		// If the token is "STOP", stop the scanning and ignore the rest.
		if string(data[:i]) == "STOP" {
			return i + 1, nil, bufio.ErrFinalToken
		}
		// Otherwise, return the token before the comma.
		return i + 1, data[:i], nil
	}
	const input = "1,2,STOP,4,"
	scanner := bufio.NewScanner(strings.NewReader(input))
	scanner.Split(onComma)
	for scanner.Scan() {
		fmt.Printf("Got a token %q\n", scanner.Text())
	}
	if err := scanner.Err(); err != nil {
		fmt.Fprintln(os.Stderr, "reading input:", err)
	}
}
Output:

Got a token "1"
Got a token "2"
Example (EmptyFinalToken)

空の最終値を持つカンマ区切りリストを解析するために、カスタム分割関数を使用するScannerを使用します。

package main

import (
	"github.com/shogo82148/std/bufio"
	"github.com/shogo82148/std/fmt"
	"github.com/shogo82148/std/os"
	"github.com/shogo82148/std/strings"
)

func main() {
	// カンマ区切りのリスト。最後のエントリは空です。
	const input = "1,2,3,4,"
	scanner := bufio.NewScanner(strings.NewReader(input))
	// コンマで区切る分割関数を定義します。
	onComma := func(data []byte, atEOF bool) (advance int, token []byte, err error) {
		for i := 0; i < len(data); i++ {
			if data[i] == ',' {
				return i + 1, data[:i], nil
			}
		}
		if !atEOF {
			return 0, nil, nil
		}
		// 最後に配信されるトークンが1つあります。これが空の文字列である場合があります。
		// ここでbufio.ErrFinalTokenを返すと、Scanにこれ以降のトークンがないことを伝えます。
		// ただし、Scan自体からエラーが返されるわけではありません。
		return 0, data, bufio.ErrFinalToken
	}
	scanner.Split(onComma)
	// Scan.
	for scanner.Scan() {
		fmt.Printf("%q ", scanner.Text())
	}
	if err := scanner.Err(); err != nil {
		fmt.Fprintln(os.Stderr, "reading input:", err)
	}
}
Output:

"1" "2" "3" "4" ""
Example (Lines)

Scannerの最も単純な使用方法は、標準入力を行のセットとして読み取ることです。

package main

import (
	"github.com/shogo82148/std/bufio"
	"github.com/shogo82148/std/fmt"
	"github.com/shogo82148/std/os"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	for scanner.Scan() {
		fmt.Println(scanner.Text()) // Printlnは最後の'\n'を追加します
	}
	if err := scanner.Err(); err != nil {
		fmt.Fprintln(os.Stderr, "reading standard input:", err)
	}
}
Output:

Example (Words)

スキャナを使用して、スペースで区切られたトークンのシーケンスとして入力をスキャンすることにより、 単純な単語カウントユーティリティを実装します。

package main

import (
	"github.com/shogo82148/std/bufio"
	"github.com/shogo82148/std/fmt"
	"github.com/shogo82148/std/os"
	"github.com/shogo82148/std/strings"
)

func main() {
	// 人工的な入力ソース。
	const input = "Now is the winter of our discontent,\nMade glorious summer by this sun of York.\n"
	scanner := bufio.NewScanner(strings.NewReader(input))
	// スキャン操作のための分割関数を設定します。
	scanner.Split(bufio.ScanWords)
	// 単語を数えます。
	count := 0
	for scanner.Scan() {
		count++
	}
	if err := scanner.Err(); err != nil {
		fmt.Fprintln(os.Stderr, "reading input:", err)
	}
	fmt.Printf("%d\n", count)
}
Output:

15

func NewScanner added in v1.1.0

func NewScanner(r io.Reader) *Scanner

func (*Scanner) Buffer added in v1.6.0

func (s *Scanner) Buffer(buf []byte, max int)

Bufferは、スキャン中に使用する初期バッファと、割り当て可能な最大バッファサイズを設定します。 最大トークンサイズは、maxとcap(buf)の大きい方よりも小さくなければなりません。 max <= cap(buf)の場合、 Scanner.Scan はこのバッファのみを使用し、割り当てを行いません。

デフォルトでは、Scanner.Scan は内部バッファを使用し、最大トークンサイズを MaxScanTokenSize に設定します。

Bufferはスキャンの開始後に呼び出された場合、パニックを発生させます。

func (*Scanner) Bytes added in v1.1.0

func (s *Scanner) Bytes() []byte

BytesはScanの呼び出しによって生成された最新のトークンを返します。 基になる配列は、後続の Scanner.Scan の呼び出しによって上書きされる可能性があります。 メモリ確保は行われません。

Example

最新のScan呼び出しを[]byteとして返します。

package main

import (
	"github.com/shogo82148/std/bufio"
	"github.com/shogo82148/std/fmt"
	"github.com/shogo82148/std/os"
	"github.com/shogo82148/std/strings"
)

func main() {
	scanner := bufio.NewScanner(strings.NewReader("gopher"))
	for scanner.Scan() {
		fmt.Println(len(scanner.Bytes()) == 6)
	}
	if err := scanner.Err(); err != nil {
		fmt.Fprintln(os.Stderr, "shouldn't see an error scanning a string")
	}
}
Output:

true

func (*Scanner) Err added in v1.1.0

func (s *Scanner) Err() error

Errは Scanner によって遭遇した最初のEOF以外のエラーを返します。

func (*Scanner) Scan added in v1.1.0

func (s *Scanner) Scan() bool

Scanは、 Scanner.Bytes または Scanner.Text メソッドを介して利用可能な次のトークンに Scanner を進めます。 入力の終わりに到達するかエラーが発生すると、falseを返します。 Scanがfalseを返した後、 Scanner.Err メソッドはスキャン中に発生したエラーを返しますが、 エラーが[io.EOF]の場合、 Scanner.Err はnilを返します。 スキャンが進まずに空のトークンを多数返す場合、スキャナーはpanicします。 これは、スキャナーの一般的なエラーモードです。

func (*Scanner) Split added in v1.1.0

func (s *Scanner) Split(split SplitFunc)

Splitは Scanner の分割関数を設定します。 デフォルトの分割関数は ScanLines です。

Splitはスキャンが開始された後に呼び出された場合、パニックを引き起こします。

func (*Scanner) Text added in v1.1.0

func (s *Scanner) Text() string

Textは Scanner.Scan の呼び出しで生成された最新のトークンを、そのバイトを保持する新しく割り当てられた文字列として返します。

type SplitFunc added in v1.1.0

type SplitFunc func(data []byte, atEOF bool) (advance int, token []byte, err error)

SplitFuncは、入力をトークン化するために使用されるsplit関数のシグネチャです。 引数は、残りの未処理データの初期部分のサブストリングと、 Reader にもうデータがないことを報告するフラグであるatEOFです。 戻り値は、入力を進めるためのバイト数と、ユーザーに返す次のトークン(あれば)、およびエラー(あれば)です。

関数がエラーを返した場合、スキャンは停止します。この場合、入力の一部が破棄される可能性があります。 エラーが ErrFinalToken である場合、スキャンはエラーなしで停止します。 ErrFinalToken と一緒に非nilトークンが配信される場合、最後のトークンとなり、 ErrFinalToken と一緒にnilトークンが配信される場合、スキャンが直ちに停止します。

それ以外の場合、スキャナは入力を進めます。トークンがnilでない場合、スキャナはユーザーにそれを返します。トークンがnilの場合、スキャナはさらにデータを読み込んでスキャンを続けます。もしデータがもうない場合(つまり、atEOFがtrueの場合)、スキャナは終了します。データがまだ完全なトークンを保持していない場合、例えば改行がない場合は、 SplitFunc は(0、nil、nil)を返して Scanner にデータをスライスに読み込んで再試行するように指示できます。

この関数は、空のデータスライスでは呼び出されません(ただし、atEOFがtrueの場合は除く)。ただし、atEOFがtrueの場合、データが空でなく、常に未処理のテキストを保持しているかもしれません。

type Writer

type Writer struct {
	// contains filtered or unexported fields
}

Writerは io.Writer オブジェクトに対してバッファリングを行います。 Writer に書き込む際にエラーが発生した場合、以降のデータの受け入れや、 Writer.Flush メソッドの呼び出しはエラーを返します。 全てのデータが書き込まれた後、クライアントは Writer.Flush メソッドを呼び出して、全てのデータが基になる io.Writer に転送されることを保証する必要があります。

Example
package main

import (
	"github.com/shogo82148/std/bufio"
	"github.com/shogo82148/std/fmt"
	"github.com/shogo82148/std/os"
)

func main() {
	w := bufio.NewWriter(os.Stdout)
	fmt.Fprint(w, "Hello, ")
	fmt.Fprint(w, "world!")
	w.Flush() // フラッシュするのを忘れないで!
}
Output:

Hello, world!

func NewWriter

func NewWriter(w io.Writer) *Writer

NewWriterは、バッファのデフォルトサイズを持つ新しい Writer を返します。 引数のio.Writerが既に十分に大きなバッファサイズを持つ Writer である場合、基になる Writer を返します。

func NewWriterSize

func NewWriterSize(w io.Writer, size int) *Writer

NewWriterSizeは、バッファのサイズが指定された最小値を持つ新しい Writer を返します。 引数のio.Writerがすでに十分な大きさを持つ Writer である場合、基になる Writer を返します。

func (*Writer) Available

func (b *Writer) Available() int

Available はバッファ内で未使用のバイト数を返します。

func (*Writer) AvailableBuffer added in v1.18.0

func (b *Writer) AvailableBuffer() []byte

AvailableBufferは、b.Available() 容量の空のバッファを返します。 このバッファは追加されることを意図しており、 直後の Writer.Write 呼び出しに渡されます。 このバッファは、b上の次の書き込み操作までの間のみ有効です。

Example
package main

import (
	"github.com/shogo82148/std/bufio"
	"github.com/shogo82148/std/os"
	"github.com/shogo82148/std/strconv"
)

func main() {
	w := bufio.NewWriter(os.Stdout)
	for _, i := range []int64{1, 2, 3, 4} {
		b := w.AvailableBuffer()
		b = strconv.AppendInt(b, i, 10)
		b = append(b, ' ')
		w.Write(b)
	}
	w.Flush()
}
Output:

1 2 3 4

func (*Writer) Buffered

func (b *Writer) Buffered() int

Bufferedは現在のバッファに書き込まれたバイト数を返します。

func (*Writer) Flush

func (b *Writer) Flush() error

Flushはバッファされたデータを基になる io.Writer に書き込みます。

func (*Writer) ReadFrom added in v1.1.0

func (b *Writer) ReadFrom(r io.Reader) (n int64, err error)

ReadFrom は io.ReaderFrom インターフェースを実装します。もし基礎となる書き込み先が ReadFrom メソッドをサポートしている場合、これは基礎となる ReadFrom を呼び出します。 バッファされたデータと基礎となる ReadFrom がある場合、これはバッファを埋めてから ReadFrom を呼び出します。

func (*Writer) Reset added in v1.2.0

func (b *Writer) Reset(w io.Writer)

Resetは、フラッシュされていないバッファデータを破棄し、エラーをクリアし、出力をwにリセットします。 Writer のゼロ値に対してResetを呼び出すと、内部バッファがデフォルトのサイズに初期化されます。 w.Reset(w)(つまり、Writer を自身にリセットすること)は何もしません。

func (*Writer) Size added in v1.10.0

func (b *Writer) Size() int

Sizeはバイト単位で下層のバッファーのサイズを返します。

func (*Writer) Write

func (b *Writer) Write(p []byte) (nn int, err error)

Write は p の内容をバッファに書き込みます。 書き込まれたバイト数を返します。 nn < len(p) の場合、短い書き込みの理由を説明するエラーも返ります。

func (*Writer) WriteByte

func (b *Writer) WriteByte(c byte) error

WriteByteは1バイトを書き込みます。

func (*Writer) WriteRune

func (b *Writer) WriteRune(r rune) (size int, err error)

WriteRuneは一つのUnicodeコードポイントを書き込み、書き込んだバイト数とエラーを返します。

func (*Writer) WriteString

func (b *Writer) WriteString(s string) (int, error)

WriteString関数は文字列を書き込みます。 書き込んだバイト数を返します。 もし書き込んだバイト数がsの長さよりも少ない場合、短い書き込みである理由を説明するエラーも返されます。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL