Go语言遍历字符串输出整数而非字符的原因及解决方法
问题原因与修复方案
原因
在Go语言中,用range遍历字符串时,迭代返回的第二个值是**rune类型**(它是int32的别名),对应字符的Unicode码点。直接用fmt.Println(c)输出时,会按照整数类型打印,所以你看到的是97、98、99这类ASCII码值。
修复方法
有两种常用的解决方式:
方法一:将rune转为string类型
修改genString函数,打印时把c转换为string类型:
func genString(v string) { for _, c := range v { fmt.Println(string(c)) } }
方法二:用fmt.Printf指定字符格式符%c
替换fmt.Println为fmt.Printf,通过%c格式符直接输出字符:
func genString(v string) { for _, c := range v { fmt.Printf("%c\n", c) } }
测试后两种方式都会输出预期结果:
a b c
内容的提问来源于stack exchange,提问作者Troskyvs
相关产品推荐
相关产品推荐

