问题描述

for i:=0;i<len(a);i++{
    if a[i] != b[i]{
        return false
    }
}

并且只是

a == b

我已经发现相同的字符串具有不同的地址

I've found that the same string have different address

a := "abc"
b := "abc"
println(&a)
println(&b)

答案是:< br>
0xc420045f68

0xc420045f58

answer is :
0xc420045f68
0xc420045f58

so ==不使用地址进行比较。

实际上,我想知道==如何比较两个字符串。

我在网上搜索了很长时间。但是失败了。

so == not using address to compare.
In fact, I would like to know how == compares two strings.
I am searching for a long time on net. But failed...

推荐答案

 == 字符串
==string
的地址。 a  b  == 
ab==
 b  a  a 
baa
 == 运行时 memequal()
==runtimememequal()
 == 
==

为<$ c自定义相等函数的唯一原因$ c> string 值才有意义,这是您知道字符串启发式的地方。例如。如果您知道所有字符串值都具有相同的前缀,并且它们的最后一个字符可能不同。在这种情况下,您可以编写一个比较器函数,该函数仅比较字符串的最后一个字符来确定它们是否相等(并且,仅可选地返回以实际比较其余字符)。当然,此解决方案不会使用循环。

string

这篇关于在golang中使用==符号并使用循环比较字符串a是否等于字符串b,哪个性能更好?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!