亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

在字符串上使用字節包有什么好處?

在字符串上使用字節包有什么好處?

Go
蠱毒傳說 2021-07-02 14:53:08
http://play.golang.org/p/CZTmhNepkM有人可以解釋為什么我們需要字節嗎?例如,在 go playgound 中,我正在做同樣的事情,但字符串包比字節更容易使用。當我們有字符串包時,為什么有人需要字節包來實現 HasSuffix 功能? strings.HasSuffix(word, "ed") bytes.HasSuffix(word_byte, []byte("ed"))
查看完整描述

2 回答

?
DIEA

TA貢獻1820條經驗 獲得超3個贊

在 Go v1.0 之前的某個時候,沒有rune類型。這就是為什么標準庫中的某些處理字符串部分或迭代“字符”的方法將采用字節切片(而不是符文切片)的原因。

由于許多方法采用字節切片并避免不斷轉換為字符串并返回 - 兩種類型都存在一些基本功能。


查看完整回答
反對 回復 2021-07-05
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

一個重要的答案是性能。在進行諸如此生物信息學任務此處為最快的 Go 代碼)之類的大量字符串處理時,必須使用字節切片 API。

Go 1.8 通過優化 ASCII 集的使用進一步改進了字節包。

提交9a8c695喬·蔡(dsnet

bytesstrings: 針對 ASCII 集進行優化

在 Google 內部的大型代碼庫中,有數千種用途:

ContainsAny|IndexAny|LastIndexAny|Trim|TrimLeft|TrimRight

對其使用情況的分析表明,其中超過 97% 的字符集僅使用僅由 ASCII 符號組成的字符集。


Uses of ContainsAny|IndexAny|LastIndexAny:

     6% are 1   character  (e.g., "\n" or " ")

    58% are 2-4 characters (e.g., "<>" or "\r\n\t ")

    24% are 5-9 characters (e.g., "()[]*^$")

    10% are 10+ characters (e.g., "+-=&|><!(){}[]^\"~*?:\\/ ")

我們針對 ASCII 集進行了優化,這些集通常用于在某些字符串中搜索“控制”字符。我們不針對單字符場景進行優化,因為IndexRuneIndexByte可以使用

查看完整回答
反對 回復 2021-07-05
  • 2 回答
  • 0 關注
  • 249 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號