go语言按字节遍历

简介: go语言按字节遍历

在Go语言中,按字节遍历一个字符串或字节数组是一个常见的操作。Go语言中的字符串是不可变的字节序列,因此可以直接转换为字节切片([]byte)来逐个字节地访问。下面是一些示例代码,展示了如何实现这一过程:

通过 for 循环遍历

package main

import (
    "fmt"
)

func main() {
   
    str := "Hello, 世界" // 包含ASCII和非ASCII字符
    for i := 0; i < len(str); i++ {
   
        fmt.Printf("Byte at index %d: %v (hex: %x)\n", i, str[i], str[i])
    }
}

这段代码将输出每个字节及其对应的十六进制表示。对于包含多字节字符(如中文)的字符串,这将显示组成这些字符的各个字节。

使用 range 关键字遍历

如果你想要更加简洁地遍历字符串中的每一个字节,可以使用range关键字:

package main

import (
    "fmt"
)

func main() {
   
    str := "Hello, 世界"
    for i, b := range str {
   
        fmt.Printf("Index: %d, Byte: %v (hex: %x), Rune: %c\n", i, b, b, b)
    }
}

这里有一点需要注意:当使用range直接遍历字符串时,它实际上会返回的是字符的索引和对应的Unicode码点值(rune类型),而不是原始的字节。这是因为Go语言尝试以更自然的方式处理文本数据,尤其是对于包含非ASCII字符的情况。如果你确实需要获取原始字节,可以先将字符串转换成[]byte

package main

import (
    "fmt"
)

func main() {
   
    str := "Hello, 世界"
    bytes := []byte(str) // 将字符串转换为字节切片
    for i, b := range bytes {
   
        fmt.Printf("Index: %d, Byte: %v (hex: %x)\n", i, b, b)
    }
}

这种方式确保了你能够正确地按照单个字节来访问字符串内容,这对于处理二进制数据或者进行某些特定类型的文本处理非常有用。

目录
相关文章
Go语言中的数组、切片和映射解析
Go语言中的数组、切片和映射解析
|
5天前
|
存储 Go 索引
go语言中遍历字符串
go语言中遍历字符串
21 5
|
1天前
|
Go 索引
go语言遍历字符串
go语言遍历字符串
7 3
|
3天前
|
Go 索引
go语言按字符(Rune)遍历
go语言按字符(Rune)遍历
13 3
|
25天前
|
Java Go 数据处理
go语言使用切片而非数组
【10月更文挑战第18天】
13 1
|
5月前
|
Go
go语言数组与切片
go语言数组与切片
|
6月前
|
存储 安全 Java
Go语言学习10-指针类型
【4月更文挑战第11天】本篇 Huazie 向大家介绍 Go语言的指针类型
49 2
Go语言学习10-指针类型
|
6月前
|
测试技术 Go 容器
go语言中的数组与切片(一)
go语言中的数组与切片
55 0
go语言中的数组与切片(一)
|
Go 索引
终于学会使用Go语言切片 切片操作看这里就够了
终于学会使用Go语言切片 切片操作看这里就够了
65 1
终于学会使用Go语言切片 切片操作看这里就够了
|
6月前
|
存储 Go 容器
go语言中的数组与切片(二)
go语言中的数组与切片
48 0