Go語言:"" 與 `` 包裹字符串的區(qū)別

"" 與 `` 包裹字符串的區(qū)別


解析:

  • 使用 "" 包裹的字符串 會(huì)解析 字符串中的 轉(zhuǎn)義符
  • 使用 `` 包裹的字符串 不會(huì)解析 字符串中的 轉(zhuǎn)義符

性能:

  • 使用 "" 包裹的字符串 性能 比較慢極慢(由 轉(zhuǎn)義符字符串的長度 決定)
  • 使用 `` 包裹的字符串 性能 極快

說明:

  • 字符串 實(shí)際上是 字符數(shù)組(學(xué)過 其他編程語言 的可能都知道,據(jù)我所知 GoLang 的書籍都 沒講過沒重點(diǎn)講
  • 解析 會(huì) 遍歷 整一個(gè) 字符串 (字符數(shù)組),尋找可以 解析轉(zhuǎn)義符,不管 原先字符串里 有沒有 轉(zhuǎn)義符,都會(huì) 遍歷一次
  • 不解析 則會(huì) 直接輸出

測試用的代碼實(shí)例


package main

import "time"

func main() {
    str1 := ""    // 用于保存 "" 包裹的字符串
    str2 := ``    // 用于保存 `` 包裹的字符串
    timer := 1000 // 統(tǒng)一循環(huán)次數(shù)
    i := timer    // 計(jì)數(shù)器

    t1 := time.Now().UnixNano()
    for i > 0 {
        str1 += "測試\n測試\n測試\n測試\n測試\n測試\n"
        // str1 += "測試測試測試測試測試測試測試"
        i--
    }
    t2 := time.Now().UnixNano()
    println(`"" 所消耗的時(shí)間:`, t2-t1)

    i = timer // 重置計(jì)數(shù)器
    t3 := time.Now().UnixNano()
    for i > 0 {
        str2 += `測試` + "\n" + `測試` + "\n" + `測試` + "\n" +
            `測試` + "\n" + `測試` + "\n" + `測試` + "\n"
        // str2 += `測試測試測試測試測試測試測試`
        i--
    }
    t4 := time.Now().UnixNano()
    println("`` 所消耗的時(shí)間:", t4-t3)
}

雙方有轉(zhuǎn)義符要轉(zhuǎn)譯的情況下 - 輸出結(jié)果:

"" 所消耗的時(shí)間: 4986900
`` 所消耗的時(shí)間: 1996200
  • 時(shí)間比:2.5 : 1

雙方?jīng)]有轉(zhuǎn)義符要轉(zhuǎn)譯的情況下 - 輸出結(jié)果:

"" 所消耗的時(shí)間: 3988900
`` 所消耗的時(shí)間: 1994300
  • 時(shí)間比:2 : 1
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容