




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
我们今天主要来说一说标准库中的srgs代码包。这个代码包也用到了不少ncde包ncduf8包中的程序实体。下面这个问题就是针对tisBile类型的。我们今天的问题是:与srg比,tisBile类型的值有哪些优势?先来说说sig类型。我们都知道,在Gotrg类型的值是不可变的。如果我们想获得一个不一样的字符串,那么就只能基于原字符串进行裁剪、拼接等操作,从而生成一个新的字符串。在底层,一个tig值内被一块的内间中时,内存的字节数量也会被记录下来,并用于表示该tig值的长度。你可以把这块内存的内容看成一个字节数组,而相应的sigsig值上应用切片表达式,就相当于在对其底层的字节数组做切片。另外,我们在进行字符串拼接的时候,Go更具体地说,一个sigidr值中有一个用于承载内容的容器(以下简称内容容器)。它是一个以ye类型的切片(以下简称字节切片)。由于这样的字节切片的底层数组就是一个字节数组,所以我们可以说它与sig容的方式是一样的。实际上,它们都是通过一个uaePoter正是因为这样的内部构造,Bler节切片本身来说,它包含的任何元素值都可以被修改,但是ulr这就意味着,已存在于ulr值中的内容是不可变的。因此,我们可以利用uler值提供的方法拼接的内容,而丝毫不用担心这些方影响到已存在的内容。这里所说的方法指的是,Bier值拥有的一系列指针方法,包括:ieWtBtertRnWiSrng我们可以通过调用上述方法把新的内容拼接到已存在的内容的尾部(也就是右边)必要,uler值会自动地对自身的内容容器进行扩容。这里的自动扩容策略与切片的扩容策略一致。换句话说,我们在向uleridr值中已存在的内容就不会再被拷贝。除了ulr值的自动扩容,我们还可以选择手动扩容,这通过调用uder值的Gow方法就可以做到。row方法也可以被称为扩容方法,它接受一个nt类型的参数n必要,rw方把其所属值中内容容器的容量增加n字节更体讲它生成一个字节切片作为新的内容容器,该切片的容量会是原容器容量的二倍再加上n。之后,它会把原容器中的所有字节全部拷贝到新容器中。varbuilder1fmt.Println("Growthebuilderfmt.Printf("Thelengthofcontentsinthebuilderis%d.\n",当然,Grow方法还可能什么都不做。这种情况的前提条件是:当前的内容容器中的未用容量已经够用了,即:未用容量大于或等于n的前提条件是类似的。fmt.Println("Resetthebuilderfmt.Printf("Thethirdoutput(%d):\n%q\n",builder1.Len(),最后,Builder值是可以被重用的。通过调用它的Reset方法,我们可以让Builder一旦被重用,ulr被Go语言的回收器标记并回收掉。问题我们只要调用了Bier调用们,就不以任方式所属行。否只要何副本上调用上述方法就都会panic。这种panic会告诉我们,这样的使用方式是并不合法的,因为这里的Builder值是副本而varbuilder1builder3:=//builder3.Grow(1)//这里会panic_=正是由于已使用的Bler值不能再被,所以肯定不会出现多个uler容器(也就是那个字节切片)共用一个底层字节数组的情况。这样也就避免了多个同源的idr值在拼接内容时可能产生的问题。不过,虽然已使用的uler不再被,它的值却。无么时,我们都可以通过任何方式这样的指针值。注意,这样的指针值指向的都会是同一个idrf2:=func(bp*strings.Builder)(*bp).Grow(1)//这里虽然不会panic,但不是并发安全的builder4:=//builder4.Grow(1)//这里会panic_=67正因为如此,这里就产生了一个问题,即:如果uler生。这就是我们所说的操作和并发安全问题。idr值自己是无法解决这些问题的。所以,我们在通过传递其指针值共享ulr值Bler值以及它的指针值。我们可以在各处分别一个uler值来使用,也可以先一个uler值,然后在eet方法即可。builder5:=builder5.Grow(1)//这里不会panic总之,关于ier值的约束是有意义的,也是很有必要的。虽然我们仍然可以通过某些方式共享Bilr的Bler值,不会有任何问题。与srgBider类型恰恰相反,tnsReer类型是为了高效字符串而存在的。后者的高效主要体现在它对字符串的机制上,它封装了很多用于在tig内容的最佳实践。rns.ae类型的值(以下简称Rdr值串中的内容。在的过程中,edr值会保存已的字节的计数(以下简称已读计此外,这个已读计数也是回退和位置设定时的重要依据。虽然它属于Rdr部结构,但我们还是可以通过该值的LnSze把它计算出来的。代码如下:varreader1readingIndex:=reader1.Size()-int64(reader1.Len())//aer值拥有的大部分用于的方法都会及时地更新已读计数。比如,Rdyte会在成功后将这个计数的值加1。,Rdune在功之会把被的所占字节为计增除此之外,edrek方法也会更新该值的已读计数。实际上,这个Sk次的起始索引位置。另外,如果我们把常量oSkurentfst的值来计算新的计数值。offset2:=expectedIndex:=reader1.Size()-int64(reader1.Len())+fmt.Printf("Seekwithoffset%dandwhence%d...\n",offset2,readingIndex,_:=reader1.Seek(offset2,fmt.Printf("Thereadingindexinreader:%d(returnedbySeek)\n",fmt.Printf("Thereadingindexinreader:%d(computedbyme)\n",综上所述,edr现高的就在内部读计计数就代下一次的起始索引位置。它可以很容易地被计算出来。edrek方法可以直接设定该值中的已读计数值。今天,我们主要讨论了tis代码包中的两个重要类型,即:Bier和eer者用于构建字符串,而后者则用于字符串。与rg值相比,lr值的优势主要体现在字符串拼接方面。它可以在保证已存在的内容不变的前提下,拼接的内容,并且会在拼接的过程中,尽量减少内存分配和内容拷贝的次数。不过,这类值在使用上也是有约束的。它在被真正使用之后就不能再被了,否则就会引发panic。虽然这个约束很严格,但是也可以带来一定的好处。它可以有效地避免一些操作。虽然我们可以通过一些(比如传递它的指针值)绕过个束但是大利的。最好的解决方案就是分别、分开使用、互不。aer值让我方便一符串内容的高要体它对串的机制上。在的过程中,Rar会保已节的,也读计。计数着下次始索置,也是键所我们利用Ln方法和Se方法,计算出其中的已读计数的值。有了它,我们就可以更加灵活地进行字符串了。我只在本文介绍了上述两个数据类型,但并不意味着srgssrgs包还提供了大量的函数。比如: 今天的思考题是:*rns.idersrn.edeGo 售卖。页面已增加防盗追踪,将依法其上一 36|unicode与字符编 5 //Stringreturnstheaccumulatedstring.func(b*Builder)St
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防水桥面施工方案
- 2025国际贸易合同范本
- 2025租赁合同范本我方为承租人
- 2025科技园区网络系统集成合同
- 2025建筑材料供应商合同相关的法律风险管理分析
- 2025企业(公司)项目基础设施建设合同管理
- 2025年北京房屋租赁合同范本下载
- 明确方向2024年公务员省考试题及答案
- 档案流通与共享机制试题及答案
- 2025网络安全外包服务合同范本
- 《商务沟通与谈判》课件 第一章 商务沟通概述
- 安徽省皖北县中联盟2024-2025学年高二下学期3月联考数学试题(A卷)(原卷版+解析版)
- 物流运输过程中的法律法规试题及答案
- 专升本思政全新模式试题及答案
- 2024年内蒙古地质矿产集团有限公司运营管理分公司招聘考试真题
- Unit 7 A Day to Remember Section A (课件)-2024-2025学年英语人教版7年级下册
- 中央2025年中央社会工作部所属事业单位招聘11人笔试历年参考题库附带答案详解
- 暨南大道西延惠山段(江阴界-S261)新建工程报告书
- 消费行为影响机制-深度研究
- 健康咨询与服务推广协议
- 教师语言与沟通艺术知到智慧树章节测试课后答案2024年秋温州大学
评论
0/150
提交评论