Go語言使用字符串的幾個技巧分享_第1頁
Go語言使用字符串的幾個技巧分享_第2頁
Go語言使用字符串的幾個技巧分享_第3頁
Go語言使用字符串的幾個技巧分享_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第Go語言使用字符串的幾個技巧分享一、字符串底層就是一個字節(jié)數(shù)組

這真的非常重要,而且影響著下面的其他幾個技巧。當(dāng)你創(chuàng)建一個字符串時,其本質(zhì)就是一個字節(jié)的數(shù)組。這意味著你可以像訪問數(shù)組一樣的訪問單獨(dú)的某個字節(jié)。例如,下面的代碼逐個打印字符串中的每個字節(jié)以及對應(yīng)字節(jié)數(shù)組中的每個字節(jié):

packagemain

import"fmt"

funcmain(){

str:="hello"

fori:=0;ilen(str);i++{

fmt.Printf("%b%s\n",str[i],string(str[i]))

}

這是一個很重要的知識,因此才有了第二個技巧。。。

二、使用字節(jié)數(shù)組或緩沖區(qū)可以提升字符串連接的速度

在Go語言中字符串是只讀的,這表示每次當(dāng)你使用str=str+"something"時,實(shí)際上創(chuàng)建了一個新的字符串對象。如果你尋求代碼的最高效率,這里應(yīng)該使用字節(jié)緩沖區(qū)來替代,例如:

packagemain

import(

"bytes"

"fmt"

funcmain(){

str:="something"

buf:=bytes.NewBufferString(str)

fori:=0;i1000;i++{

buf.Write([]byte(randomString()))

fmt.Println(buf.String())

funcrandomString()string{

ret:="pretend-this-is-random"

returnret

}

如果使用字節(jié)數(shù)組會進(jìn)一步提升上述代碼的效率,但你需要知道最終字符串的大小。一個直觀的例子就是Go語言中的left-pad實(shí)現(xiàn)。

三、你可以像拼接其他數(shù)組一樣拼接字符串

當(dāng)你需要截取字符串中的一部分時,可以使用像截取數(shù)組某部分那樣來操作,示例代碼:

packagemain

import"fmt"

funcmain(){

str:="XBodyContentX"

content:=str[1:len(str)-1]

fmt.Println(content)

}

四、使用`符號來創(chuàng)建多行字符串

這個相當(dāng)簡單,你希望在代碼中定義一個包含多行地址信息的字符串,那么你需要用到`這個字符,如下所示:

packagemain

import"fmt"

funcmain(){

str:=`Mr.Smith

123SomethingSt

SomeCity,CA94043`

fmt.Println(str)

}

五、你可以在字符串中嵌入Unicode字符

假設(shè)實(shí)現(xiàn)WebSocket通訊時,你需要讓傳輸?shù)臄?shù)據(jù)以0x00開始,以0xFF結(jié)束[源碼]

我們可以在任意字符串中通過如下代碼實(shí)現(xiàn):

packagemain

import"fmt"

funcmain(){

str:="\x00BodyContent\xff"

fmt.Println(str)

}

同樣的,你可以使用Unicode字符串來處理,或者也可以在字符串中使用原始字符。例如,下面的代碼都是有效的:

packagemain

import"fmt"

funcmain(){

a:="ay!"

b:="\u00FFay!"

fmt.Println(a,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論