github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/strings/reader.go (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package strings 6 7 import ( 8 "github.com/shogo82148/std/io" 9 ) 10 11 // Readerは、文字列から読み取りを行うことで、 [io.Reader] 、[io.ReaderAt] 、 [io.ByteReader] 、 [io.ByteScanner] 、 12 // [io.RuneReader] 、 [io.RuneScanner] 、 [io.Seeker] 、および [io.WriterTo] インターフェースを実装します。 13 // Readerのゼロ値は、空の文字列のReaderのように動作します。 14 type Reader struct { 15 s string 16 i int64 17 prevRune int 18 } 19 20 // Lenは、文字列の未読部分のバイト数を返します。 21 func (r *Reader) Len() int 22 23 // Sizeは、基礎となる文字列の元の長さを返します。 24 // Sizeは、 [Reader.ReadAt] を介して読み取ることができるバイト数です。 25 // 返される値は常に同じであり、他のメソッドの呼び出しに影響を受けません。 26 func (r *Reader) Size() int64 27 28 // Readは、 [io.Reader] インターフェースを実装します。 29 func (r *Reader) Read(b []byte) (n int, err error) 30 31 // ReadAtは、 [io.ReaderAt] インターフェースを実装します。 32 func (r *Reader) ReadAt(b []byte, off int64) (n int, err error) 33 34 // ReadByteは、 [io.ByteReader] インターフェースを実装します。 35 func (r *Reader) ReadByte() (byte, error) 36 37 // UnreadByteは、 [io.ByteScanner] インターフェースを実装します。 38 func (r *Reader) UnreadByte() error 39 40 // ReadRuneは、[io.RuneReader] インターフェースを実装します。 41 func (r *Reader) ReadRune() (ch rune, size int, err error) 42 43 // UnreadRuneは、 [io.RuneScanner] インターフェースを実装します。 44 func (r *Reader) UnreadRune() error 45 46 // Seekは、 [io.Seeker] インターフェースを実装します。 47 func (r *Reader) Seek(offset int64, whence int) (int64, error) 48 49 // WriteToは、 [io.WriterTo] インターフェースを実装します。 50 func (r *Reader) WriteTo(w io.Writer) (n int64, err error) 51 52 // Resetは、 [Reader] をsから読み取るようにリセットします。 53 func (r *Reader) Reset(s string) 54 55 // NewReaderは、sから読み取る新しい [Reader] を返します。 56 // [bytes.NewBufferString] に似ていますが、より効率的で書き込み不可能です。 57 func NewReader(s string) *Reader