我想说:

for i := 0; i < len(str); i++ {
    dosomethingwithrune(str[i]) // takes a rune
}

但事实证明,str[i]的类型是byte(uint8),而不是rune.

如何按符号而不是按字节迭代字符串?

推荐答案

请参阅Effective Go中的此示例:

for pos, char := range "日本語" {
    fmt.Printf("character %c starts at byte position %d\n", char, pos)
}

这张照片是:

character 日 starts at byte position 0
character 本 starts at byte position 3
character 語 starts at byte position 6

对于字符串,范围为您做了更多的工作,将单个字符串分开 通过解析UTF-8获得Unicode代码点.

Go相关问答推荐

如何在Go中使用a-h/tempson渲染预格式的内容?

如何使用go从map.dbf map.prj map.shp map.shx中的任何文件中了解层名称

Docker容器之间的连接被拒绝

如何复制*C.char?

未对GoFr中的所有请求进行跟踪

即使HTTP服务器正在使用GO和Protobuf、SQL Server启动,请求也不返回结果

exec的可执行决议.命令+路径

Kafka架构注册表-Broker:Broker无法验证记录

go grpc:无法导入github.com/golang/protobuf/proto(没有所需的模块提供包github.com/gorang/protobuf-proto)

如何找到一个空闲的TPM句柄来保存新的密钥对对象?

使用 Golang 获取目录磁盘使用情况

生成一个 CSV/Excel,在 Golang 中该列的下拉选项中指定值

当填充通道的函数调用未嵌入 goroutine 时,为什么我会遇到死锁?

也许在 golang 中包(字符串和字符串类型不匹配)

为什么 reflect.TypeOf(new(Encoder)).Elem() != reflect.TypeOf(interfaceVariable)?

在 Gorm 的 AfterFind() 钩子中获取智能 Select struct 的值

如何在测试中使用自定义标志(使用`testify/suite`)

使用反射在 struct 内迭代切片 struct

如何在golang中使用ozzo验证进行时间最大验证

Go:如何创建一个可以提供配置文件中描述的 url 的服务器