Go bytes包

ops/2024/10/21 7:49:16/

bytes包 

Go 语言中的 bytes 包提供了用于操作字节切片的函数集合。字节切片是 Go 语言中非常常用的数据类型,用于表示二进制数据或 UTF-8 编码的字符串。

bytes 包主要功能

  • 操作和处理字节切片
  • 搜索和比较字节切片
  • 修改和分割字节切片
  • 读取和写入字节切片

使用场景

  • 字符串处理:处理和操作 UTF-8 编码的字符串数据。
  • 数据解析:解析和处理二进制数据,如网络协议数据包或文件格式。
  • 高效 I/O:使用 bytes.Buffer 进行高效的读写操作,避免频繁的内存分配和拷贝。
字节切片操作
  • bytes.Compare(a, b []byte) int: 比较两个字节切片。
  • bytes.Contains(b, subslice []byte) bool: 判断字节切片是否包含子切片。
  • bytes.Equal(a, b []byte) bool: 判断两个字节切片是否相等。
  • bytes.Index(b, sep []byte) int: 返回子切片在字节切片中首次出现的位置。
  • bytes.Join(s [][]byte, sep []byte) []byte: 将多个字节切片连接为一个。
  • bytes.Split(s, sep []byte) [][]byte: 将字节切片按指定分隔符分割为多个子切片。
  • bytes.Trim(s []byte, cutset string) []byte: 去除字节切片两端包含在 cutset 中的字符。

bytes.Buffer

bytes.Buffer 是一个用于缓冲字节的缓冲区,提供了高效的读写操作。

package mainimport ("bytes""fmt"
)func main() {var buffer bytes.Bufferbuffer.WriteString("Hello, ")buffer.WriteString("World!")fmt.Println(buffer.String()) // 输出: Hello, World!
}

                               

package mainimport ("bytes""fmt"
)func main() {a := []byte("Hello, World!")b := []byte("World")// 比较fmt.Println(bytes.Compare(a, b)) // 输出: 1// 包含fmt.Println(bytes.Contains(a, b)) // 输出: true// 相等fmt.Println(bytes.Equal(a, b)) // 输出: false// 查找fmt.Println(bytes.Index(a, b)) // 输出: 7// 连接s := [][]byte{[]byte("Hello"), []byte("World")}fmt.Println(string(bytes.Join(s, []byte(", ")))) // 输出: Hello, World// 分割fmt.Println(bytes.Split([]byte("a,b,c"), []byte(","))) // 输出: [[97] [98] [99]]// 修剪fmt.Println(string(bytes.Trim([]byte(" Hello, World! "), " "))) // 输出: Hello, World!
}

                                                                                                                                                                                                                                                                                                                                      


http://www.ppmy.cn/ops/56236.html

相关文章

expdp Ora-00600 expcnt mismatch BUG 修复

环境: 19c 单机 ADG expdp 导出报错 Trace 文件报错 Ora-00600 临时解决办法 1、删除不匹配的对象(对exp基表操作,避免异常建议提前备份) SQL> With b as (select count(*) cnt,objn,snapshot_id from sys.exp_stat$ es group by objn,sn…

【Linux命令基础】vim的简介

文章目录 前言如何在Ubuntu中安装VimVim的作用Vim的优势vim的模式总结前言 在Linux环境中,我们经常需要编辑文本文件,无论是编写代码,还是修改配置文件。而在这些场景中,Vim编辑器无疑是我们的得力助手。Vim是从vi发展出来的一个文本编辑器,代码补全、编译及错误跳转等方…

代码随想录打卡第十八天

代码随想录–二叉树部分 day 17 休息日 day 18 二叉树第五天 文章目录 代码随想录--二叉树部分一、力扣654--最大二叉树二、力扣617--合并二叉树三、力扣700--二乘树中的搜素四、力扣98--验证二叉搜索树 一、力扣654–最大二叉树 代码随想录题目链接:代码随想录 给…

JVM:类的生命周期

文章目录 一、介绍二、加载阶段三、连接阶段四、初始化阶段 一、介绍 类的生命周期描述了一个类加载、连接(验证、准备和解析)、初始化、使用、卸载的整个过程。 加载(Loading)阶段第一步是类加载器根据类的权限定名通过不同的渠…

前端视角下的Spring-Boot语法学习:demo-crud 实现增删改查

今日话题 基于 Spring Boot 实现增删改查,仅仅只是提供接口不涉及数据库增删改查 作者:云层上的光 时间:2024年6月21日 15时19分14秒 主线任务 一、项目创建 1、基于 idea 创建项目 2、选择项目依赖 Spring Web 二、实现增删改查 1、新…

LLM - 神经网络的训练过程

1. 对于回归问题,用损失函数来计算预测值和真实值的差异,一种常用的公式是如下图所示(Mean Square Error),如果损失函数的值越小说明神经网络学习越准确,所以神经网络训练目标是减小损失函数的值, 2. 对于分类问题&…

ES6 Reflect 详解(三)

Reflect 对象与Proxy 对象一样,也是 ES6 为了操作对象而提供的新 API。 Reflect 对象的设计目的有 4 个。 将 Object 对象的一些明显属于语言内部的方法(比如 Object.defineProperty ),放到 Reflect 对象上。现阶段,某…

一款专业的 Windows 恶意程序分析与清理工具

大家好,今天给大家分享一款专业的 Windows 恶意程序分析与清理工具OpenArk,它能够帮助用户发现系统中隐藏的恶意软件。 OpenArk是一款Windows平台上的开源Ark工具. Ark是Anti-Rootkit(对抗恶意程序)的简写, OpenArk目标成为逆向工…