栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Go如何进行字符串比较?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go如何进行字符串比较?

如下面的程序集转储所示,

runtime.eqstring
在进行短路检查以查看两个操作数是否为相同的内存字符串(第11行)之后,将字符串比较从运行时委托给函数(第17行):

$ cat foo.gopackage mainfunc main() {        a := "hello"        b := "world"        _ = a == b}$ go tool 6g -S foo.go--- prog list "main" ---0000 (foo.go:3) TEXT    main+0(SB),$40-00001 (foo.go:3) LOCALS  ,$00002 (foo.go:4) LEAQ    go.string."hello"+0(SB),BX0003 (foo.go:4) MOVQ    (BX),SI0004 (foo.go:4) MOVQ    8(BX),CX0005 (foo.go:5) LEAQ    go.string."world"+0(SB),BX0006 (foo.go:5) MOVQ    (BX),DX0007 (foo.go:5) MOVQ    8(BX),AX0008 (foo.go:6) JMP     ,110009 (foo.go:6) MOVQ    $1,AX0010 (foo.go:6) JMP     ,230011 (foo.go:6) CMPQ    CX,AX0012 (foo.go:6) JNE     ,220013 (foo.go:6) MOVQ    SI,(SP)0014 (foo.go:6) MOVQ    CX,8(SP)0015 (foo.go:6) MOVQ    DX,16(SP)0016 (foo.go:6) MOVQ    AX,24(SP)0017 (foo.go:6) CALL    ,runtime.eqstring+0(SB)0018 (foo.go:6) MOVBQZX 32(SP),BX0019 (foo.go:6) CMPB    BX,$00020 (foo.go:6) JEQ     ,220021 (foo.go:6) JMP     ,90022 (foo.go:6) MOVQ    $0,AX0023 (foo.go:7) RET     ,--- prog list "init" ---0024 (foo.go:7) TEXT    init+0(SB),$0-00025 (foo.go:7) MOVBQZX initdone·+0(SB),AX0026 (foo.go:7) LOCALS  ,$00027 (foo.go:7) CMPB    AX,$00028 (foo.go:7) JEQ     ,340029 (foo.go:7) CMPB    AX,$20030 (foo.go:7) JNE     ,320031 (foo.go:7) RET     ,0032 (foo.go:7) CALL    ,runtime.throwinit+0(SB)0033 (foo.go:7) UNDEF   ,0034 (foo.go:7) MOVB    $2,initdone·+0(SB)0035 (foo.go:7) RET     ,

除非您在编译器或运行时上工作,否则不要太在意您:只需使用规范定义的运算符,并期望与字符串长度的比较为O(n)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/380871.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号