在Go中格式化字符串的幾種常用方法
前言
由于字符串通常由書(shū)面文本組成,在很多情況下,我們可能希望通過(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è)字符開(kāi)始,以某種方式格式化給定的字符串。
下面列出了一些常見(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ú)需鍵入回車(chē)鍵或回車(chē)鍵:
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)文章
Go語(yǔ)言HTTP請(qǐng)求流式寫(xiě)入body的示例代碼
這篇文章主要介紹了Go語(yǔ)言HTTP請(qǐng)求流式寫(xiě)入body,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
解決Golang time.Parse和time.Format的時(shí)區(qū)問(wèn)題
這篇文章主要介紹了解決Golang time.Parse和time.Format的時(shí)區(qū)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
使用go語(yǔ)言解析xml的實(shí)現(xiàn)方法(必看篇)
下面小編就為大家?guī)?lái)一篇使用go語(yǔ)言解析xml的實(shí)現(xiàn)方法(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06

