Loops 字符串上的循环返回int32
为什么在go中,字符串范围返回int32值而不是原始字符,这与其他语言不同 例如:Loops 字符串上的循环返回int32,loops,go,range,Loops,Go,Range,为什么在go中,字符串范围返回int32值而不是原始字符,这与其他语言不同 例如: func main() { var s string s = "Hello" for _, v := range s { fmt.Println(v) } } 返回: 72 101 108 108 111 我们应该使用下面的转换来获得原始字符吗 func main() { var s string s = "Hello" for _
func main() {
var s string
s = "Hello"
for _, v := range s {
fmt.Println(v)
}
}
返回:
72
101
108
108
111
我们应该使用下面的转换来获得原始字符吗
func main() {
var s string
s = "Hello"
for _, v := range s {
fmt.Println(string(v))
}
}
对于带有range子句的语句
对于字符串值,range子句迭代Unicode代码
从字节索引0开始的字符串中的点。连续
在迭代中,索引值将是
字符串中连续的UTF-8编码代码点,第二个
rune类型的值将是相应代码的值
指向如果迭代遇到无效的UTF-8序列,则
第二个值将是0xFFFD,Unicode替换字符,以及
下一次迭代将推进字符串中的一个字节
在Go中,字符是Unicode代码点,是一个Go类型的符文别名int32。Go字符串用于以UTF-8编码形式存储Unicode代码点
与字符串类型之间的转换
将有符号或无符号整数值转换为字符串类型会产生
包含整数的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))
}
}
游乐场:
输出:
Hello, 世界
0 72 H
1 101 e
2 108 l
3 108 l
4 111 o
5 44 ,
6 32
7 19990 世
10 30028 界
参考资料:
对于带有range子句的语句
对于字符串值,range子句迭代Unicode代码
从字节索引0开始的字符串中的点。连续
在迭代中,索引值将是
字符串中连续的UTF-8编码代码点,第二个
rune类型的值将是相应代码的值
指向如果迭代遇到无效的UTF-8序列,则
第二个值将是0xFFFD,Unicode替换字符,以及
下一次迭代将推进字符串中的一个字节
在Go中,字符是Unicode代码点,是一个Go类型的符文别名int32。Go字符串用于以UTF-8编码形式存储Unicode代码点
与字符串类型之间的转换
将有符号或无符号整数值转换为字符串类型会产生
包含整数的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))
}
}
游乐场:
输出:
Hello, 世界
0 72 H
1 101 e
2 108 l
3 108 l
4 111 o
5 44 ,
6 32
7 19990 世
10 30028 界
参考资料:
它返回unicode代码,您可以执行s[u],然后您将得到character@WilomGfx:它返回Unicode代码点。ASCII是一个子集。您可以使用fmt.Printf%c,v或fmt.Printf%q,v来打印符文。如果语言规范这么说,就是这样。这里没有什么需要知道的。它返回unicode代码,您可以执行s[\ux]并获得character@WilomGfx:它返回Unicode代码点。ASCII是一个子集。您可以使用fmt.Printf%c,v或fmt.Printf%q,v来打印符文。如果语言规范这么说,就是这样。这里没有什么可知道的。