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
String 在go中迭代字符串字符的最正确方法是什么_String_Loops_Go - Fatal编程技术网

String 在go中迭代字符串字符的最正确方法是什么

String 在go中迭代字符串字符的最正确方法是什么,string,loops,go,String,Loops,Go,我是围棋新手,我希望迭代字符串的字符 package main import ( "fmt" ) func main() { var a string = "abcd" for i, c := range a { fmt.Printf("%d %s\n", i, c) } } 我希望输出是 0 a 1 b 2 c 3 d 但事实并非如此。我做错了什么?修复go-vet和package fmt格式错误消息类型r

我是围棋新手,我希望迭代字符串的字符

package main

import (
    "fmt"
)

func main() {
    var a string = "abcd"
    for i, c := range a {
        fmt.Printf("%d %s\n", i, c)
    }
}
我希望输出是

    0 a
    1 b
    2 c
    3 d
但事实并非如此。我做错了什么?

修复go-vet和package fmt格式错误消息类型rune是int32类型的别名:

游乐场:

符文是Unicode代码点字符,而不是字符串

使用%c而不是%s。比如说,

package main

import (
    "fmt"
)

func main() {
    var a string = "abcd"
    for i, c := range a {
        fmt.Printf("%d %c\n", i, c)
    }
}
游乐场:

输出:

0 a
1 b
2 c
3 d
 0 G
 1 r
 2 e
 3 e
 4 c
 5 e
 6  
 7 Ε
 9 λ
11 λ
13 ά
15 δ
17 α
类型字符串UTF-8可变长度编码的示例:

package main

import (
    "fmt"
)

func main() {
    var a string = "Greece Ελλάδα"
    for i, c := range a {
        fmt.Printf("%2d %c\n", i, c)
    }
}
游乐场:

输出:

0 a
1 b
2 c
3 d
 0 G
 1 r
 2 e
 3 e
 4 c
 5 e
 6  
 7 Ε
 9 λ
11 λ
13 ά
15 δ
17 α
参考资料:


.

你的问题是根据标题的效率,还是根据问题的正确性?问题可能太广泛了,这是关于两者的问题。最好将每个问题作为单独的问题来问。