[]byte和string區(qū)別

string

1 .是一個指針贷腕,指向某個數(shù)組的首地址

[]byte

1 .是一個切片slice咬展。一個封裝了數(shù)組的結(jié)構(gòu)體
2 .slice結(jié)構(gòu)

type slice struct {
    array unsafe.Pointer
    len   int
    cap   int

使用場景

1 .想要在本身原地修改破婆,就只能使用[]byte
2 .string不能為nil,想要返回nil表達特殊含義,只能使用[]byte
3 .string可以直接比較瀑梗,而[]byte不可以,所以[]byte不可以當map的key值抛丽。
4 .因為無法修改string中的某個字符,需要粒度小到操作一個字符時允蜈,用[]byte
5 .[]byte切片這么靈活蒿柳,想要用切片的特性就用[]byte
6 .需要大量字符串處理的時候用[]byte垒探,性能好很多

區(qū)別

1 .string的指針指向的內(nèi)容是不可以改變的,所以每次更改一次字符串仔引,都需要重新分配內(nèi)存褐奥。之前的內(nèi)存還需要GC收回,這是導致string效率底下的根本原因
2 .如果我們保存的字符在 ASCII 表的,比如[0-1, a-z,A-Z..]直接可以保存到 byte
3 .如果我們保存的字符對應碼值大于 255,這時我們可以考慮使用 int 類型保存

string,byte,rune的區(qū)別

1.string:只讀的采用utf8編碼的字節(jié)切片儿倒,因此len獲得的長度并不是字符個數(shù)呜笑,而是字節(jié)個數(shù)
2.rune是int32的別名,代表字符的unicode編碼凰慈,采用4個字節(jié)存儲驼鹅。將string轉(zhuǎn)為rune就意味著任何一個字符都采用4個字節(jié)來存儲unicode值,這樣每次遍歷返回的時候就是返回unicode值豺型,而不是字節(jié)买乃,解決亂碼的問題

1 .通過for range對字符串進行遍歷時剪验,每次獲取到的對象都是rune類型的
2 .

3 .byte:字節(jié)切片前联,可變的

1 .使用string按增量方式構(gòu)建字符串會導致多次內(nèi)存分配和復制抖韩,但是使用bytes就不會,因此更加高效

3.utf8和unicode區(qū)別

1 .ascii:128個英文字符對應的二進制編碼
2 .非ascii編碼:其他語言:中文双谆,法語席揽,德語。需要用多個字節(jié)表示一個符號
3 .unicode:把所有的符號都納入其中幌羞,每一個符號都給予獨一無二的編碼
4 .問題:Unicode有多種存儲方式寸谜,對應很多的二進制格式,存儲有很大的浪費属桦,英文需要一個字節(jié)熊痴,漢字需要好幾個字節(jié),如果都是這樣的話聂宾,那么會有很大的浪費
5 .utf8:utf8是unicode的實現(xiàn)方式之一,是一種變長的編碼方式果善。根據(jù)不同的符號而變化字節(jié)長度
6 .

string,數(shù)組和切片的實現(xiàn)與區(qū)別

1 .這三種數(shù)據(jù)類型,在底層有相同的內(nèi)存結(jié)構(gòu)系谐,在上層巾陕,因為語法的限制而有不同的行為表現(xiàn)
2 .數(shù)組

1 .數(shù)組是一種值類型,雖然數(shù)組的元素可以被修改纪他,但是復制和函數(shù)傳參都是整體復制的方式處理
2 .

3 .字符串

1 .字符串的底層也是對應的字節(jié)數(shù)組
2 .字符串的只讀屬性禁止了在程序種對底層字節(jié)數(shù)組的元素的修改
3 .字符串賦值只是服是了數(shù)據(jù)地址和對應的長度鄙煤,并不會導致底層數(shù)據(jù)的復制

4 .切片

1 .切片的結(jié)構(gòu)和字符串類似茶袒,只是解除了只讀限制
2 .
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梯刚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子薪寓,更是在濱河造成了極大的恐慌乾巧,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件预愤,死亡現(xiàn)場離奇詭異,居然都是意外死亡咳胃,警方通過查閱死者的電腦和手機植康,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來展懈,“玉大人销睁,你說我怎么就攤上這事供璧。” “怎么了冻记?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵睡毒,是天一觀的道長。 經(jīng)常有香客問我冗栗,道長演顾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任隅居,我火速辦了婚禮钠至,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胎源。我一直安慰自己棉钧,他們只是感情好,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布涕蚤。 她就那樣靜靜地躺著宪卿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪万栅。 梳的紋絲不亂的頭發(fā)上佑钾,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機與錄音申钩,去河邊找鬼次绘。 笑死,一個胖子當著我的面吹牛撒遣,可吹牛的內(nèi)容都是我干的邮偎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼义黎,長吁一口氣:“原來是場噩夢啊……” “哼禾进!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起廉涕,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤泻云,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后狐蜕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宠纯,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年层释,在試婚紗的時候發(fā)現(xiàn)自己被綠了婆瓜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖廉白,靈堂內(nèi)的尸體忽然破棺而出个初,到底是詐尸還是另有隱情,我是刑警寧澤猴蹂,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布院溺,位于F島的核電站,受9級特大地震影響磅轻,放射性物質(zhì)發(fā)生泄漏珍逸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一瓢省、第九天 我趴在偏房一處隱蔽的房頂上張望弄息。 院中可真熱鬧,春花似錦勤婚、人聲如沸摹量。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缨称。三九已至,卻和暖如春祝迂,著一層夾襖步出監(jiān)牢的瞬間睦尽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工型雳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留当凡,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓纠俭,卻偏偏與公主長得像沿量,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子冤荆,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容