Slide 15
Slide 15 text
fmt.ScanStateインタフェース
■ トークンごとに読み込みを行う
● 幅なども取れる
type ScanState interface {
// 1コードポイントを読み込む
ReadRune() (r rune, size int, err error)
// 次のReadRuneでも同じ結果が返ってくるようにする
UnreadRune() error
// 空白を飛ばす
SkipSpace()
// skipSpaceがtrueの場合は空白を飛ばす。 fがtrueを返す間読み込む
Token(skipSpace bool, f func(rune) bool) (token []byte, err error)
// 幅を取得、設定されていない場合は okがfalse
Width() (wid int, ok bool)
// ReadRuneがあるため常にエラーを返すように実装する
Read(buf []byte) (n int, err error)
}