在Go中格式化字符串的幾種常用方法
前言
由于字符串通常由書面文本組成,在很多情況下,我們可能希望通過(guò)標(biāo)點(diǎn)符號(hào)、換行和縮進(jìn)來(lái)更好地控制字符串的外觀,以使其更易于閱讀。
在本教程中,我們將介紹一些處理go字符串的方法,以確保所有輸出文本的格式正確。
字符串字面量
讓我們首先區(qū)分字符串字面量和字符串值。字符串字面量就是我們?cè)谟?jì)算機(jī)程序的源代碼中看到的,包括引號(hào)。當(dāng)我們調(diào)用fmt.Println
函數(shù)并運(yùn)行程序時(shí),我們看到的是一個(gè)字符串。
在“Hello, World!”程序中,字符串字面量是"Hello, World!"
,而字符串值是 Hello, World!
,沒(méi)有引號(hào)。這個(gè)字符串值就是我們運(yùn)行Go程序時(shí)在終端窗口中看到的輸出。
但是有些字符串值可能需要包含引號(hào),比如我們引用一個(gè)源時(shí)。因?yàn)樽址置媪亢妥址挡⒉幌嗟龋酝ǔS斜匾獮樽址置媪刻砑宇~外的格式,以確保字符串值按我們想要的方式顯示。
引號(hào)
因?yàn)槲覀兛梢栽贕o中使用反引號(hào)(`
)或雙引號(hào)("
),通過(guò)在由反引號(hào)括起來(lái)的字符串中使用雙引號(hào),可以很簡(jiǎn)單地在字符串中嵌入引號(hào):
`Sammy says, "Hello!"`
或者,要使用后引號(hào),可以將字符串括在雙引號(hào)中:
"Sammy likes the `fmt` package for formatting strings.."
通過(guò)使用反引號(hào)和雙引號(hào),我們可以控制字符串中引號(hào)和反引號(hào)的顯示。
重要的是要記住,在Go中使用反引號(hào)會(huì)創(chuàng)建一個(gè)raw
字符串字面量,而使用雙引號(hào)會(huì)創(chuàng)建一個(gè)interpret
字符串字面量。
轉(zhuǎn)義字符
另一種格式化字符串的方法是使用轉(zhuǎn)義字符。轉(zhuǎn)義字符用于告訴代碼下面的字符具有特殊的含義。轉(zhuǎn)義字符都以反斜杠鍵(\
)和字符串中的另一個(gè)字符開始,以某種方式格式化給定的字符串。
下面列出了一些常見(jiàn)的轉(zhuǎn)義字符:
轉(zhuǎn)義字符 | 它如何格式化 |
---|---|
|反斜線 | |
" | 雙引號(hào) |
\n | 換行符 |
\t | Tab(水平縮進(jìn)) |
讓我們使用轉(zhuǎn)義字符將引號(hào)添加到上面的引號(hào)示例中,但這一次我們將使用雙引號(hào)來(lái)表示字符串:
fmt.Println("Sammy says, \"Hello!\"")
OutputSammy says, "Hello!"
通過(guò)使用轉(zhuǎn)義字符\"
,我們可以使用雙引號(hào)將包含在雙引號(hào)中文本的字符串括起來(lái)。
我們可以使用 \n
轉(zhuǎn)義字符來(lái)?yè)Q行,而無(wú)需鍵入回車鍵或回車鍵:
fmt.Println("This string\nspans multiple\nlines.")
OutputThis string
spans multiple
lines.
我們也可以組合轉(zhuǎn)義字符。下面來(lái)打印一個(gè)多行字符串,并包含分項(xiàng)列表的制表符間距,例如:
fmt.Println("1.\tShark\n2.\tShrimp\n10.\tSquid")
Output1. Shark
2. Shrimp
10. Squid
在前面的例子中,\t
轉(zhuǎn)義字符提供的水平縮進(jìn)確保了在第二列內(nèi)對(duì)齊,使輸出非常易讀。
轉(zhuǎn)義字符用于為字符串添加額外的格式,這些格式可能很難或不可能實(shí)現(xiàn)。如果沒(méi)有轉(zhuǎn)義字符,你將無(wú)法構(gòu)造字符串Sammy says, "I like to use the `fmt` package"
。
多行
將字符串打印成多行可以提高文本的可讀性。對(duì)于多行,字符串可以組合成干凈有序的文本,格式化為字母,或用于保持詩(shī)歌或歌曲歌詞的換行。
要?jiǎng)?chuàng)建跨多行的字符串,需要使用反引號(hào)將字符串括起來(lái)。請(qǐng)記住,雖然這將保留行返回,但它也創(chuàng)建了一個(gè)raw
字符串字面量。
` This string is on multiple lines within three single quotes on either side. `
Output This string is on multiple lines within three single quotes on either side.
為了避免這種情況,你需要將第一行放在后引號(hào)的后面,并以后引號(hào)結(jié)束最后一行。
`This string is on multiple lines within three single quotes on either side.`
如果你需要?jiǎng)?chuàng)建一個(gè)解釋過(guò)的字符串字面量,可以使用雙引號(hào)和+
操作符,但你需要插入自己的換行符。
"This string is on\n" + "multiple lines\n" + "within three single\n" + "quotes on either side."
雖然反引號(hào)可以使長(zhǎng)文本更容易打印和閱讀,但如果你需要一個(gè)經(jīng)過(guò)解釋的字符串字面量,就需要使用雙引號(hào)。
原始字符串字面量
如果我們不希望字符串具有特殊的格式,該怎么辦?例如,我們可能需要比較或計(jì)算有意使用反斜杠的計(jì)算機(jī)代碼字符串,因此我們不希望將它用作轉(zhuǎn)義字符。
原始字符串字面量告訴Go忽略字符串中的所有格式,包括轉(zhuǎn)義字符。
我們使用反引號(hào)來(lái)創(chuàng)建一個(gè)原始字符串:
fmt.Println(`Sammy says,\"The balloon\'s color is red.\"`)
OutputSammy says,\"The balloon\'s color is red.\"
通過(guò)在給定字符串的兩邊使用反引號(hào)來(lái)構(gòu)造原始字符串,我們可以保留反斜杠和其他用作轉(zhuǎn)義字符的字符。
總結(jié)
本教程介紹了在Go中格式化文本的幾種方法。通過(guò)使用轉(zhuǎn)義字符或原始字符串等技術(shù),我們能夠確保程序的字符串在屏幕上正確呈現(xiàn),以便最終用戶能夠輕松地閱讀所有輸出的文本。
相關(guān)文章
goland 實(shí)現(xiàn)自動(dòng)格式化代碼
這篇文章主要介紹了goland 實(shí)現(xiàn)自動(dòng)格式化代碼的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04淺析Go語(yǔ)言容器之?dāng)?shù)組和切片的使用
在?Java?的核心庫(kù)中,集合框架可謂鼎鼎大名:Array?、List、Set等等,隨便拎一個(gè)出來(lái)都值得開發(fā)者好好學(xué)習(xí)如何使用甚至是背后的設(shè)計(jì)源碼。雖然Go語(yǔ)言沒(méi)有如此豐富的容器類型,但也有一些基本的容器供開發(fā)者使用,接下來(lái)讓我們認(rèn)識(shí)一下這些容器類型吧2022-11-11獲取Golang環(huán)境變量的三種方式小結(jié)
本文介紹了Golang中獲取環(huán)境變量的三種方式,包含使用Viper包、GoDotEnv包和os包,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11Golang簡(jiǎn)單實(shí)現(xiàn)http的server端和client端
Http 服務(wù)是基于 Tcp 的應(yīng)用層的實(shí)現(xiàn),也是最常見(jiàn)的網(wǎng)絡(luò)協(xié)議之一。本文主要介紹了Golang簡(jiǎn)單實(shí)現(xiàn)http的server端和client端,感興趣的可以了解一下2021-06-06Prometheus Go client library使用方式詳解
這篇文章主要為大家介紹了Prometheus Go client library使用方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11