我是新手,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和包fmt格式错误消息(typerune是type的别名int32):
10: Printf format %s has arg c of wrong type rune
0 %!s(int32=97)
1 %!s(int32=98)
2 %!s(int32=99)
3 %!s(int32=100)
游乐场:https : //play.golang.org/p/oM9D8oNlaAO
符文是 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)
    }
}
游乐场:https : //play.golang.org/p/LFQPGZ9X5kk
输出:
0 a
1 b
2 c
3 d
stringUTF-8 变长编码类型示例:
package main
import (
    "fmt"
)
func main() {
    var a string = "Greece ??????"
    for i, c := range a {
        fmt.Printf("%2d %c\n", i, c)
    }
}
游乐场:https : //play.golang.org/p/Fdgg6UMXAAt
输出:
 0 G
 1 r
 2 e
 3 e
 4 c
 5 e
 6  
 7 ?
 9 ?
11 ?
13 ?
15 ?
17 ?
参考:
| 归档时间: | 
 | 
| 查看次数: | 1938 次 | 
| 最近记录: |