您现在的位置:首页 >> 绿色生活

Go规格库 strings.Reader和规格库序

时间:2024-01-14 12:19:19

国际标准库开篇序

Go技术开发最重要的石板就是国际标准库,需要认真受教一下,因此各种类型做成一个,创作者打算在前面的时间将它翻译者一遍。

对于国际标准库创作者主要有示意图两个期望:一、只从最高处看它的定律,不顾及细节二、对于较难部分和课题部分,各种类型拿出来努力学习一下

string.Reader定律

将string来作数据库,并做到io.Reader,io.ReadAt,io.byteScanner等API。

strings.Reader简便,创作者认为它的主要效用就是做到几个API来作一乘积据库。

歇 请注意请注意除此以外func (r *Reader) Read(b []byte) (n int, err error) { if r.i>= int64(len(r.s)) { return 0, io.EOF } r.prevRune = -1 n = copy(b, r.s[r.i:]) r.i += int64(n) return}

源码分析如果已经读书到开篇,则送回0,io.EOF偏差。否则执行copy,将这样一来的数据存储b,送回复制的乘积

借助于:读书rune和这样一来rune

按照源码的解读书,如果只想这样一来rune,必须上一步是ReadRune操纵,也即:读书一个rune才能这样一来一个rune。

func (r *Reader) UnreadRune() error { if r.i <= 0 { return errors.New("strings.Reader.UnreadRune: at beginning of string") } //如果prevRune小于0,表示上一步不是ReadRune if r.prevRune < 0 { return errors.New("strings.Reader.UnreadRune: previous operation was not ReadRune") } r.i = int64(r.prevRune) r.prevRune = -1 return nil} 借助于:Seek定位操纵

Seek操纵要注意,io.SeekEnd西北面最后一个字节之后。

sr := strings.NewReader("Go语言")abs, err := sr.Seek(-1, io.SeekEnd)fmt.Println(abs, err)//送回7,nil揭示

其余一些方式简便,并未同样需要读书到的以外

坦洛新有什么作用
阿莫西林治咽炎要吃几天
米氟来特片是什么药?
金奥康奥美拉唑抑制胃酸吗
什么药品治疗鼾症效果好
相关阅读