00:02
嗨,大家好,我是孙恩鹏啊,今天给大家分享的呢,是构语言中字符串比较的几种方式啊,在构语言中呢,我们进行字符算比较的时候啊,一般来说是有三种方式啊,第一种方式是用这个双等号啊。第二种方式呢,是用这个string.compare啊,第三种方式啊,是用这个string.equal food啊,对于这种双等号比较的方式呢,它本身是区分大小写的啊。这一个string compare这种方式呢,它也是默认区分区分大小写啊,这个函数啊,它接收两个字符串参数啊,然后返回一个int值,返回一个int值啊,返回结果有三种,一种是零啊,还有一种是这个一,再有一种就是负一零表示说两个两个字符串啊,然后是一致的啊,是相等的啊。
01:01
然后这个1FOOD呢,它本身是不区分哪和血啊,它直接就返回一个true和false啊。如果我们要是说啊,像这个双等号,还有这个comp函数,我们想让他去忽略大小写的话,那我们可以就先通过这个string.to落将对应的字符串转换成全都转换成小写啊,然后再去进行比较啊。好了,我们这个地方呢,我们去调用一下这几种函数啊,去看看他们对于这一个大写构和小写构的一个比较结果啊。我们首先先打开这个命点构文件啊,执行之前已经编写好的这个函数,我们来看一下运行效果啊。好了,我们看到在区分大小写的时候呢,这个go和go啊,它是不相等的,直接返回一个false,忽略的小写的时候呢,是一个true啊,Compare函数呢,它默认是区分大小写啊,这个时候返回了一个false啊。
02:09
忽略大小写的时候是出一或负的,本身就是忽略大小写的啊,它返回来一个处啊,然后我们接下来呢,再看一下这三种方式的一个执行效率啊,我们在第一个测试执行效率的时候呢,是使用的一个。奔驰mark测试啊,然后首先我们在这建立一个test的一个目录啊,Test目录下面呢,编写一个以下滑杠test结尾的go文件啊。然后我们打开在这个地方啊,去编写一个以编辑mark开头啊,然后以自定义的一个函数啊,结尾的这么一个测试函数啊,后面这一串呢,你名字自定义啊,随便都好啊,但是前面你必须用bemark开头啊,然后这个函数呢,它接受的是一个testing testing.b这么一个指针参数啊,然后我们它内部呢,是做了一个for循环,For循环的这一个。
03:07
这个起始值呢,是从零开始,然后它最大值呢,是这个b.N减一啊,这个b.b.N减一呢,就是以后系统啊,根据当前的实际情况,然后去设定的一个执行次数啊。我们在方循环中,方循环中去调用我们之前编写好的这一个比较函数啊。当我们来。执行一下这个测试,看一下运行效果。执行这一执行这一个测试的时候,它使用的命令是go test。中杠be等于点这个点呢,表示说执行我们上面这些全部的这几个特殊函数啊。然后第一个我们来执行一下回车。
04:05
好了,我们现在已经执行完了,我们来看一下。在这个地方啊,这个地方是第一个就是我们上面定义的一些测试函数的名称啊,后面这个八啊,你看第一个测试函,测试函数后面都带了一个杠八啊,这个杠八表示是说以后在执行这个测试函数的时候呢,它用了几个处理进程啊,这个地方默认就是个八。然后这个地方,这个地方呢,是代表说以后它这个函数一共执行了多少次啊,一共执行了多少次啊,这个地方最后一列这边是代表说他每一次执行的时候呢,耗费了多长时间啊,执行每一次的某每一次的放循环啊,用了多长时间。然后我们我们从这个运行结果当中啊,能够清晰的看到这一个。
05:01
Benchmark s tr1啊,这个函数它本质上它内部就是掉了一个双等号,双等号它的执行时间是最短的,也就是说它的执行效率是最高的啊。这这是这几种方式的一个执行效率啊,我们看到呢,在这个地方,像这个1EQUAL two里边,我们去1EQUAL two里边呢,实际上就对应的这个函数啊,对应的这个它内部先是去做了一次to落转换,然后再去比较,我们就看到它明显的这一个执行速率就非常低了啊,是直接别的一个。十倍还多啊,直接相等比较的话,区区分大小写的时候是4.25纳秒及一个忽略大小写啊,中间做了一次像小写的转换,这样又导致他的这个时间延迟到了46.2纳秒啊,这这个执行效率啊,我们再来看一下这一个。Compare,还有这个equal for它的一个源码啊,它的底层实现,我们点进去看一下。
06:01
这个compare这个地方,我们看到它本身实际上也是调用了双等号,还有这个小于号,这么一个比较运算符啊,一个比较运算符啊,我们他他说了这个地方A等等于BA,然后就返回来一个0A小于BA负一,其他情况那就是大于B大于B,这个时候返回了一个正一啊,我们需要注意的是这个地方啊。他说这个函数。只是为了啊干这个事儿。然后呢,我们通常啊,一个一个明智的选择呢,是直接使用这一个双等号大于号小于号啊,这种比较运算符啊,就是说官方不推荐我们去调用这个comp派函数,而是推荐我们直接去使用这个比较运算符啊。就是comp,我们再来看一下这个一库的。E的这个函数呢,它干的一个事情,这个样子是因为我们虽然构语言中啊,它这一个默认是使用这个UPF-八的这种变化模式,但是你实际编码过程当中啊,可能会有一些这种UN扣的编码或者其他编码传进来啊。
07:07
像这种像这种UN库的编码传进来之后呢,我们就可以调用这个一负的这个函数进行比较,它会先把这个这这个F和T啊这个东西去转换成。UTF8的这种模式,然后再去做一个比较啊,而且在比较比较的过程当中啊,我们这个地方他也看到它的这个知识说明说呃,会忽略大小写啊,会忽略大小写。这是这个的一扩付的一个一个一个源码啊,其实通过刚才这一个我们测试的这一个benchmark测试的这个执行效率啊,这个执行时间,还有这个它的一个源码啊,源码分析我们可以得出这么个结论啊,实际在编码过程当中啊,我们啊。还是直接按照官方推荐的这种这种这种方案啊,我们直接就使用这一个啊,双等号啊,大于号小于号这种比较平符啊。
08:06
好了,那今天的分享呢,就到此到此结束,感谢观看,我们下次再见。
我来说两句