gopl-zh.github.com/ch3/ch3-05-1.md
2015-12-28 08:20:58 +08:00

46 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 3.5.1. 字符串面值
字符串值也可以用字符串面值方式編寫,隻要將一繫列字節序列包含在雙引號卽可:
```
"Hello, 世界"
```
![](../images/ch3-04.png)
因爲Go語言源文件總是用UTF8編碼併且Go語言的文本字符串也以UTF8編碼的方式處理因此我們可以將Unicode碼點也寫到字符串面值中。
在一個雙引號包含的字符串面值中,可以用以反斜槓`\`開頭的轉義序列插入任意的數據。下面的換行、迴車和製表符等是常見的ASCII控製代碼的轉義方式
```
\a 響鈴
\b 退格
\f 換頁
\n 換行
\r 迴車
\t 製表符
\v 垂直製表符
\' 單引號 (隻用在 '\'' 形式的rune符號面值中)
\" 雙引號 (隻用在 "..." 形式的字符串面值中)
\\ 反斜槓
```
可以通過十六進製或八進製轉義在字符串面值包含任意的字節。一個十六進製的轉義形式是\xhh其中兩個h表示十六進製數字大寫或小寫都可以。一個八進製轉義形式是\ooo包含三個八進製的o數字0到7但是不能超過`\377`譯註對應一個字節的范圍十進製爲255。每一個單一的字節表達一個特定的值。稍後我們將看到如何將一個Unicode碼點寫到字符串面值中。
一個原生的字符串面值形式是`...`,使用反引號```代替雙引號。在原生的字符串面值中,沒有轉義操作;全部的內容都是字面的意思,包含退格和換行,因此一個程序中的原生字符串面值可能跨越多行(譯註:在原生字符串面值內部是無法直接寫```字符的,可以用八進製或十六進製轉義或+"```"鏈接字符串常量完成。唯一的特殊處理是會刪除迴車以保證在所有平台上的值都是一樣的包括那些把迴車也放入文本文件的繫統譯註Windows繫統會把迴車和換行一起放入文本文件中
原生字符串面值用於編寫正則表達式會很方便因爲正則表達式往往會包含很多反斜槓。原生字符串面值同時被廣泛應用於HTML模闆、JSON面值、命令行提示信息以及那些需要擴展到多行的場景。
```Go
const GoUsage = `Go is a tool for managing Go source code.
Usage:
go command [arguments]
...`
```