亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

遍歷字符串返回 int32

遍歷字符串返回 int32

Go
慕工程0101907 2023-05-15 09:44:06
為什么與其他語言不同,在 go 中遍歷字符串返回int32值而不是原始字符?例如:func main() {    var s string    s = "Hello"    for _, v := range s {        fmt.Println(v)    }}退貨:72101108108111我們應該像下面那樣使用轉換來獲得原始字符嗎?func main() {    var s string    s = "Hello"    for _, v := range s {        fmt.Println(string(v))    }}
查看完整描述

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 界


查看完整回答
反對 回復 2023-05-15
  • 1 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號