问题描述
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屋!