Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 字符串上的循环返回int32_Loops_Go_Range - Fatal编程技术网

Loops 字符串上的循环返回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 _

为什么在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 _, 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来打印符文。如果语言规范这么说,就是这样。这里没有什么可知道的。