我是新手,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
格式错误消息(type rune
是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
string
UTF-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 α
参考文献:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句