第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go 是如何進(jìn)行字符串比較的?

Go 是如何進(jìn)行字符串比較的?

Go
阿晨1998 2021-07-06 13:53:20
http://golang.org/ref/spec#Comparison_operatorsGo 支持字符串比較,無需任何特殊功能。Go 運(yùn)行時是否在幕后工作以比較字符串文字?
查看完整描述

2 回答

?
慕后森

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個贊

正如您在以下程序集轉(zhuǎn)儲中看到的那樣,runtime.eqstring在進(jìn)行短路檢查以查看兩個操作數(shù)是否是相同的內(nèi)存中字符串(第 11 行)之后,字符串比較被委托給運(yùn)行時(第 17 行)中的一個函數(shù):


$ cat foo.go

package main


func 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-0

0001 (foo.go:3) LOCALS  ,$0

0002 (foo.go:4) LEAQ    go.string."hello"+0(SB),BX

0003 (foo.go:4) MOVQ    (BX),SI

0004 (foo.go:4) MOVQ    8(BX),CX

0005 (foo.go:5) LEAQ    go.string."world"+0(SB),BX

0006 (foo.go:5) MOVQ    (BX),DX

0007 (foo.go:5) MOVQ    8(BX),AX

0008 (foo.go:6) JMP     ,11

0009 (foo.go:6) MOVQ    $1,AX

0010 (foo.go:6) JMP     ,23

0011 (foo.go:6) CMPQ    CX,AX

0012 (foo.go:6) JNE     ,22

0013 (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),BX

0019 (foo.go:6) CMPB    BX,$0

0020 (foo.go:6) JEQ     ,22

0021 (foo.go:6) JMP     ,9

0022 (foo.go:6) MOVQ    $0,AX

0023 (foo.go:7) RET     ,


--- prog list "init" ---

0024 (foo.go:7) TEXT    init+0(SB),$0-0

0025 (foo.go:7) MOVBQZX initdone·+0(SB),AX

0026 (foo.go:7) LOCALS  ,$0

0027 (foo.go:7) CMPB    AX,$0

0028 (foo.go:7) JEQ     ,34

0029 (foo.go:7) CMPB    AX,$2

0030 (foo.go:7) JNE     ,32

0031 (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     ,

除非您正在處理編譯器或運(yùn)行時,否則您不必?fù)?dān)心太多:只需使用規(guī)范定義的運(yùn)算符,并期望與字符串長度的比較為 O(n)。


查看完整回答
反對 回復(fù) 2021-07-12
  • 2 回答
  • 0 關(guān)注
  • 222 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號