服务器返回数组数据的四种方式

48 阅读2分钟

服务器返回数组数据的四种方式

1. 返回字节值数组([]int)

byteArray := make([]int, len(content))
for i, b := range content {
    byteArray[i] = int(b)
}

特点

  • 每个元素是 0-255 的整数,代表一个字节的值
  • 数据最原始,占用空间相对较大
  • 可以精确表示任何二进制数据

示例

原文本:"Hello" 返回结果:[72, 101, 108, 108, 111]

适用场景

  • 需要对字节进行数值计算
  • 处理二进制文件
  • 需要与其他系统进行字节级交互

2. 返回按行分割的字符串数组

lines := strings.Split(string(content), "\r\n")
// 或者更通用的处理方式
lines := strings.Split(strings.ReplaceAll(string(content), "\r\n", "\n"), "\n")

特点

  • 每个元素是一行文本
  • 保持了文本的可读性
  • 便于按行处理文本内容

示例

原文本:

Hello World
Go Programming
Test Line

返回结果:

["Hello World", "Go Programming", "Test Line"]

适用场景

  • 文本文件处理
  • 日志文件分析
  • 需要逐行处理内容

3. 返回字符数组

chars := strings.Split(string(content), "")

特点

  • 每个元素是一个字符(UTF-8编码)
  • 保持了文本的顺序性和可读性
  • 便于字符级操作

示例

原文本:"Hello" 返回结果:["H", "e", "l", "l", "o"]

适用场景

  • 字符级文本处理
  • 字符统计分析
  • 文本编辑操作

4. 直接返回字节切片

content

特点

  • 最紧凑的数据表示
  • Go 会自动将其编码为 base64 字符串(JSON 不支持直接序列化二进制数据)
  • 保留所有原始二进制信息

示例

原文本:"Hello" 返回结果:"SGVsbG8=" (base64 编码)   适用场景

  • 传输二进制数据
  • 最小化数据大小
  • 保持数据完整性

总结对比

| 方式 | 数据结构 | 可读性 | 大小 | 适用场景 |

| 字节值数组 | []int | 低 | 大 | 数值计算、二进制处理 |

| 按行分割 | []string | 高 | 中 | 文本处理、日志分析 |

| 字符数组 | []string | 高 | 大 | 字符操作、文本编辑 |

| 字节切片 | []byte | 低 | 小 | 二进制传输、高效存储 |

 

根据具体需求选择合适的返回方式。如果是处理文本文件,推荐使用按行分割的方式;如果是处理二进制文件,推荐使用字节值数组或直接返回字节切片。