Go中常用包笔记bufio:带缓冲的IO操作/SCANNER(二)-创新互联
Package bufio
提供可缓存的IO访问
成都创新互联基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业服务器托管报价,主机托管价格性价比高,为金融证券行业眉山服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
Scanner:
func NewScanner(r io.Reader) *Scanner //构造函数
func (s *Scanner) Buffer(buf []byte, max int) //指定使用的缓冲区
func (s *Scanner) Split(split SplitFunc) //设定切割函数 使用四个切割器
func (s *Scanner) Scan() bool //扫描
func (s *Scanner) Err() error //扫描发生的错误
func (s *Scanner) Bytes() []byte //上次扫描的结果
func (s *Scanner) Text() string //上次扫描的结果
切割器:
func ScanBytes(data []byte, atEOF bool) (advance int, token []byte, err error) func ScanLines(data []byte, atEOF bool) (advance int, token []byte, err error) func ScanRunes(data []byte, atEOF bool) (advance int, token []byte, err error) func ScanWords(data []byte, atEOF bool) (advance int, token []byte, err error)
四个切割器,分割字节数组中的第一个字节/第一行/第一个Rune(UTF8字)/单词(不包含空格),方法本身可以作为
func (s *Scanner) Split(split SplitFunc)
的参数,配合Scanner按照字节/Rune/单词/行进行扫描,例如:
s := strings.NewReader() bs := bufio.NewScanner(s) bs.Split(bufio.ScanWords) bs.Scan() { fmt.Printf(, bs.Text()) } func (s *Scanner) Bytes() []byte
Reader
func NewReader(rd io.Reader) *Reader //构造函数
func NewReaderSize(rd io.Reader, size int) *Reader //构造函数,指定缓冲区大小
func (b *Reader) Buffered() int //获取缓冲区中数据大小
func (b *Reader) Discard(n int) (discarded int, err error) //跳过若干字节不读,实际跳过的字节不会比缓冲区剩余的多(若缓冲区为空则填充一次缓冲区)
func (b *Reader) Peek(n int) ([]byte, error) //返回缓冲区的一个切片(缓冲区的引用,不会将数据读出)
func (b *Reader) Read(p []byte) (n int, err error) //读取若干字节
func (b *Reader) ReadByte() (byte, error) //读取一个字节
func (b *Reader) ReadBytes(delim byte) ([]byte, error) //寻找一个字节并返回字节之前的全部内容
func (b *Reader) ReadLine() (line []byte, isPrefix bool, err error)//读取一行,推荐使用ReadBytes('\n') 或 ReadString('\n')的方式以替代
func (b *Reader) ReadRune() (r rune, size int, err error) //读取一个Rune
func (b *Reader) ReadSlice(delim byte) (line []byte, err error) //读出数据 返回其切片
func (b *Reader) ReadString(delim byte) (string, error) //读出字符串
func (b *Reader) Reset(r io.Reader) //丢弃缓存重置状态
func (b *Reader) UnreadByte() error //撤销最近一次readByte操作
func (b *Reader) UnreadRune() error //类似上
func (b *Reader) WriteTo(w io.Writer) (n int64, err error) //reader直接写入一个Writer
Writer
func NewWriter(w io.Writer) *Writer
func NewWriterSize(w io.Writer, size int) *Writer
func (b *Writer) Available() int //缓冲区中可用大小
func (b *Writer) Buffered() int //缓冲区中未提交的数据的大小
func (b *Writer) Flush() error //提交缓冲区中数据
func (b *Writer) ReadFrom(r io.Reader) (n int64, err error) //从一个reader中读取并写入
func (b *Writer) Reset(w io.Writer) //丢弃缓存重置状态
func (b *Writer) Write(p []byte) (nn int, err error)
func (b *Writer) WriteByte(c byte) error
func (b *Writer) WriteRune(r rune) (size int, err error)
func (b *Writer) WriteString(s string) (int, error)
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网页名称:Go中常用包笔记bufio:带缓冲的IO操作/SCANNER(二)-创新互联
分享地址:http://myzitong.com/article/dpedpj.html