"" 與 `` 包裹字符串的區別
解析:
- 使用
""
包裹的字符串 會解析
字符串中的 轉義符
- 使用
``
包裹的字符串 不會解析
字符串中的 轉義符
性能:
- 使用
""
包裹的字符串 性能
比較慢
到 極慢
(由 轉義符
和 字符串的長度
決定)
- 使用
``
包裹的字符串 性能
極快
說明:
-
字符串
實際上是 字符數組
(學過 其他編程語言
的可能都知道,據我所知 GoLang
的書籍都 沒講過
或 沒重點講
)
-
解析
會 遍歷
整一個 字符串
(字符數組)
,尋找可以 解析
的 轉義符
,不管
原先字符串里 有沒有
轉義符
,都會 遍歷一次
-
不解析
則會 直接輸出
測試用的代碼實例
package main
import "time"
func main() {
str1 := "" // 用于保存 "" 包裹的字符串
str2 := `` // 用于保存 `` 包裹的字符串
timer := 1000 // 統一循環次數
i := timer // 計數器
t1 := time.Now().UnixNano()
for i > 0 {
str1 += "測試\n測試\n測試\n測試\n測試\n測試\n"
// str1 += "測試測試測試測試測試測試測試"
i--
}
t2 := time.Now().UnixNano()
println(`"" 所消耗的時間:`, t2-t1)
i = timer // 重置計數器
t3 := time.Now().UnixNano()
for i > 0 {
str2 += `測試` + "\n" + `測試` + "\n" + `測試` + "\n" +
`測試` + "\n" + `測試` + "\n" + `測試` + "\n"
// str2 += `測試測試測試測試測試測試測試`
i--
}
t4 := time.Now().UnixNano()
println("`` 所消耗的時間:", t4-t3)
}
雙方有轉義符要轉譯的情況下 - 輸出結果:
"" 所消耗的時間: 4986900
`` 所消耗的時間: 1996200
雙方沒有轉義符要轉譯的情況下 - 輸出結果:
"" 所消耗的時間: 3988900
`` 所消耗的時間: 1994300
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。