1 回答

TA貢獻1829條經驗 獲得超6個贊
Go 編程語言規范
對于語句
對于帶有范圍子句的語句
對于字符串值,“范圍”子句從字節索引 0 開始迭代字符串中的 Unicode 代碼點。在連續迭代中,索引值將是連續 UTF-8 編碼代碼點的第一個字節的索引符文類型的字符串和第二個值將是相應代碼點的值。如果迭代遇到無效的 UTF-8 序列,第二個值將為 0xFFFD,即 Unicode 替換字符,下一次迭代將在字符串中前進一個字節。
在 Go 中,一個字符是一個 Unicode 代碼點,一個 Go 類型rune
( 的別名int32
)。Gostring
用于以 UTF-8 編碼形式存儲 Unicode 代碼點。
Go 編程語言規范
轉換
與字符串類型之間的轉換
將有符號或無符號整數值轉換為字符串類型會生成一個包含整數的 UTF-8 表示形式的字符串。有效 Unicode 代碼點范圍之外的值將轉換為“\uFFFD”。
string('a')? ? ? ?// "a"
string(-1)? ? ? ? // "\ufffd" == "\xef\xbf\xbd"
string(0xf8)? ? ? // "\u00f8" == "?" == "\xc3\xb8"
type MyString string
MyString(0x65e5)? // "\u65e5" == "日" == "\xe6\x97\xa5"
例如,
package main
import (
? ? "fmt"
)
func main() {
? ? helloworld := "Hello, 世界"
? ? fmt.Println(helloworld)
? ? for i, r := range helloworld {
? ? ? ? fmt.Println(i, r, string(r))
? ? }
}
游樂場:https://play.golang.org/p/R5sBeGiJzR4
輸出:
Hello, 世界
0 72 H
1 101 e
2 108 l
3 108 l
4 111 o
5 44 ,
6 32??
7 19990 世
10 30028 界
- 1 回答
- 0 關注
- 149 瀏覽
添加回答
舉報