我是新手,Go我希望迭代字符串的字符
package main
import (
"fmt"
)
func main() {
var a string = "abcd"
for i, c := range a {
fmt.Printf("%d %s\n", i, c)
}
}
Run Code Online (Sandbox Code Playgroud)
我希望输出是
0 a
1 b
2 c
3 d
Run Code Online (Sandbox Code Playgroud)
但事实并非如此。我究竟做错了什么?
修复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)
Run Code Online (Sandbox Code Playgroud)
游乐场: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)
}
}
Run Code Online (Sandbox Code Playgroud)
游乐场:https : //play.golang.org/p/LFQPGZ9X5kk
输出:
0 a
1 b
2 c
3 d
Run Code Online (Sandbox Code Playgroud)
stringUTF-8 变长编码类型示例:
package main
import (
"fmt"
)
func main() {
var a string = "Greece ??????"
for i, c := range a {
fmt.Printf("%2d %c\n", i, c)
}
}
Run Code Online (Sandbox Code Playgroud)
游乐场: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 ?
Run Code Online (Sandbox Code Playgroud)
参考:
| 归档时间: |
|
| 查看次数: |
1938 次 |
| 最近记录: |