Golang-strconv库学习笔记

前言:

strconv库是go官方提供的一个标准包,主要用于字符串相关的处理。通过参考官方文档、中文文档和其他工具,进行学习记录。学习重点是其中的内置方法。
本文分为AtoiFormat系列,Parse系列,Append系列,Quote系列进行学习。

AtoiItoa

这两个函数主要用于string和int类型的互转,算是个人而言用的比较多的。

int类型转换为string类型

var m int = 42
var n string = strconv.Itoa(m)

string类型转换为int类型:

var s string = "123"
var t int, err = strconv.Atoi(s)
if err != nil {// 处理错误
}

Format系列

Format系列主要是用于将各种类型转换为字符串类型。其系列一共有五种函数:

在这里插入图片描述

FormatBool()

b := true
str := strconv.FormatBool(b)
fmt.Println(str) // Output: "true"

FormatInt()

i := 42
str := strconv.FormatInt(int64(i), 10) // 10表示十进制
fmt.Println(str) // Output: "42"

FormatFloat()

f := 3.14159
str := strconv.FormatFloat(f, 'f', -1, 64) // 'f'表示普通浮点数格式,-1表示最小精度,64表示位数
fmt.Println(str) // Output: "3.14159"

FormatUint()

u := uint(42)
str := strconv.FormatUint(uint64(u), 10) // 10表示十进制
fmt.Println(str) // Output: "42"

FormatComplex()

c := complex(3, 4)
str := fmt.Sprintf("%f", real(c)) + "+" + fmt.Sprintf("%f", imag(c)) + "i"
fmt.Println(str) // Output: "3.000000+4.000000i"

Parse系列

Format系列相反,Parse系列主要是用于将字符串格式化为各种数据类型。
其系列一共有五种函数:
在这里插入图片描述

需要特别注意的是:Parse在使用时需要注意处理错误。比较转字符串没啥难度,但字符串不规范,就很难转成预期的形式了。

此部分就不写怎么用了,具体请见官方文档。

Append系列

Append系列主要有下图的方法。主要作用是将一个xx类型的参数,转换为byte之后再追加到一个[]byte之后。用途主要是需要使用到[]byte时,比如需要将我的数据转换为[]byte,输出到日志或发送json等。

在这里插入图片描述

这里拿AppendFloat函数举例:
其源码为


// AppendFloat appends the string form of the floating-point number f,
// as generated by FormatFloat, to dst and returns the extended buffer.
func AppendFloat(dst []byte, f float64, fmt byte, prec, bitSize int) []byte {return genericFtoa(dst, f, fmt, prec, bitSize)
}
// bigFtoa uses multiprecision computations to format a float.func genericFtoa(dst []byte, val float64, fmt byte, prec, bitSize int) []byte {//此部分太长了,因此省略。//具体代码见文档:ftoa.go,57行。//其主要实现了对数据的预处理//之后调用了formatDigits函数
}func formatDigits(dst []byte, shortest bool, neg bool, digs decimalSlice, prec int, fmt byte) []byte {
//见ftoa.go,199行。
//主要是进行判断调用后,	return append(dst, '%', fmt)追加到后方
}

使用示例:


func main() {var slice []byteslice = strconv.AppendFloat(slice, 3.14159, 'f', -1, 64) // 'f'表示普通浮点数格式,-1表示最小精度,64表示位数fmt.Println(slice)fmt.Println(string(slice)) // Output: "3.14159"
}

Queto系列

Queto系列主要有下图的方法。主要是用于处理字符串的引号转义等场景

在这里插入图片描述

例如Queto方法,该方法就是给字符串加一个双引号,在打日志等输出场景可能有用。

func main() {a := "你好,我是climber"s := strconv.Quote(a)fmt.Println(a)fmt.Println(s)
}

在这里插入图片描述

之后还有诸如QuoteToASCII()方法, 会对字符串中的非ASCII字符进行转义处理,确保生成的字符串是符合ASCII标准的。
QuoteRune() QuoteRuneToASCII():用于将 Unicode 字符转换为带单引号的字符串字面量表示形式。
QuoteRuneToGraphic():用于将 Unicode 字符转换为带双引号的可打印字符串字面量表示形式。
其余不再例举,具体见官方文档。

strconv官方文档

当然还是官方文档才是yyds…详细请见:

中文文档地址

https://pkg.go.dev/strconv

英文文档地址

https://pkg.go.dev/strconv

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/603899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

obs推流失败问题解决

点击开始直播,出现上图的问题 【解决办法】需要升级显卡驱动 使用360驱动大师升级 点击升级 他会先备份再升级 安装完成需要重启

【LMM 014】NExT-GPT:能够输入和生成任意模态的多模态大模型

论文标题:NExT-GPT:Any-to-Any Multimodal Large Language Model 论文作者:Shengqiong Wu, Hao Fei*, Leigang Qu, Wei Ji, Tat-Seng Chua 作者单位: NExT Lab, National University of Singapore 论文原文:https://arxiv.org/abs…

Veeam Backup Replication介绍

新钛云服已累计为您分享781篇技术干货 veeam 提供了一种全面、灵活和高效的数据保护解决方案,可以使用 VeeamBackup & Replication 执行以下数据保护和灾难恢复任务: 创建 VM 和物理机备份 还原物理机、VM、 磁盘和文件 验证备份并准备恢复 创建…

Hive SQL / SQL

1. 建表 & 拉取表2. 插入数据 insert select3. 查询3.1 查询语句语法/顺序3.2 关系操作符3.3 聚合函数3.4 where3.5 分组聚合3.6 having 筛选分组后结果3.7 显式类型转换 & select产生指定值的列 4. join 横向拼接4.1 等值连接 & 不等值连接4.2 两表连接4.2.1 内连…

synchronized、volatile关键字

Java中的synchronized关键字 synchronized关键字介绍 synchronized块是Java提供的一种原子性内置锁,Java中的每个对象都可以把它当作一个同步锁来使用,这些Java内置的使用者看不到的锁被称为内部锁,也叫作监视器锁。 线程的执行代码在进入…

Linux之Ubuntu环境Jenkins部署前端项目

今天分享Ubuntu环境Jenkins部署前端vue项目 一、插件安装 1、前端项目依赖nodejs,需要安装相关插件 点击插件管理,输入node模糊查询 选择NodeJS安装 安装成功 2、配置nodejs 点击后进入 点击新增 NodeJS 配置脚手架类型:如果不填 默认npm …

XAgent调研

文章目录 1 简介2 快速测试 Quick Start3 结构分析 1 简介 XAgent(链接)是一个开源的,基于大语言模型的agent构建框架;其目标是构建出能够辅助人类处理各类任务的自动助手 定位:一个全能的,自动的辅助agen…

Transformer - Attention is all you need 论文阅读

虽然是跑路来NLP,但是还是立flag说要做个project,结果kaggle上的入门project给的例子用的是BERT,还提到这一方法属于transformer,所以大概率读完这一篇之后,会再看BERT的论文这个样子。 在李宏毅的NLP课程中多次提到了…

【LeetCode】1341. 电影评分

表:Movies ------------------------ | Column Name | Type | ------------------------ | movie_id | int | | title | varchar | ------------------------ movie_id 是这个表的主键(具有唯一值的列)。 title 是电影的名字。表&#xff1a…

深入浅出XTTS:Oracle数据库迁移升级利器

演讲大纲: 1. 什么是XTTS 2. 适用场景 3. XTTS的基本操作步骤 4. XTTS案例分享 今天主要跟大家分享一下XTTS,在网上曾看过相关讨论,但发现按网上讲的那些去实际操作的话,还是会遇到一些坑,并不能实际落下来,所以今天想跟大家分享一些实战干货. 一、什么是XTTS …

LeetCode 29. 两数相除

两数相除 给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求 不使用 乘法、除法和取余运算。 整数除法应该向零截断,也就是截去(truncate)其小数部分。例如,8.345 将被截断为 8 ,-…

linux高级管理——Squid代理

一、squid服务基础: 1.1缓存代理的概述: 代理的工作机制 当客户机通过代理来请求Web页面时.指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要的页面,则直接将缓存中的页面内容反馈给客户机:如果缓存中…

web学习笔记(十一)

目录 1.数据类型 1.1数据类型分类 (1)简单(基本)数据类型 (2)复杂(特殊)数据类型 1.2判断数据类型的方法 (1)常规判断方法: (2…

x-cmd pkg | trdsql - 能对 CSV、LTSV、JSON 和 TBLN 执行 SQL 查询的工具

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 trdsql 是一个使用 sql 作为 DSL 的强大工具: 采用 SQL 对 CSV、LTSV、JSON 和 TBLN 文件执行查询与 MySQL,Postgresql,Sqlite 的 Driver 协同,可以实现对应数据库的表与文件的 JO…

Kafka_02_Producer详解

Kafka_02_Producer详解 ProducerProducerRecordSend&Close实现原理ProducerInterceptorSerializerPartitioner 事务 Producer Producer(生产者): 生产并发送消息到Broker(推送) Producer是多线程安全的(建议通过池化以提高性能)Producer实例后可发送多条消息(可对应多个P…

2024--Django平台开发-Django知识点(四)

1.知识回顾 创建项目&#xff1a;新项目、别人项目、新版版、老版本 项目目录&#xff08;v1.0版本&#xff09; 路由系统 常见路由编写加粗样式 /index/ 函数 /index/<str:v1> 函数 re_path(ryy/(\d{4})-(\d{2})-(\d{2})/, views.yy), re_path(ryy/(?…

科研上新 | 第4期:语言-音乐对比预训练;查找表实现的神经网络推理;大模型时代重新定义搜索框架

编者按&#xff1a;欢迎阅读“科研上新”栏目&#xff01;“科研上新”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里&#xff0c;你可以快速浏览研究院的亮点资讯&#xff0c;保持对前沿领域的敏锐嗅觉&#xff0c;同时也能找到先进实用的开源工具。 本期内容速览 …

什么是ajax,为什么使用ajax!

前言&#xff1a; 要学习一门新的、技术之前&#xff0c;首先我们要了解一下他是什么&#xff0c;为什么使用&#xff0c;有什么好处&#xff0c;该怎么理解。现在就从下文开始了解吧 什么是ajax: Ajax即“Asynchronous Javascript And XML”(异步JavaScript 和XML)&#xff0…

监控API的指标

监控服务器已经是常态了&#xff0c;但是监控API的表现是啥意思呢&#xff1f;还有监控指标&#xff1f;今天就来看看如何监控API。 正如监控应用程序以确保高质量性能一样&#xff0c;也必须监控API。 API是应用程序相互通信的管道。更具体地说&#xff0c;API提供了一种方法…

spring事务默认传播机制REQUIRED的试验(手动开启事务代码+feign远程调用)

transactional注解&#xff0c;默认啥都不指定的时候&#xff0c;我们使用的就是PROPAGATION_REQUIRED这种方式。 PROPAGATION_REQUIRED:业务方法需要在一个事务中运行&#xff0c;如果方法运行时&#xff0c;已处在一个事务中&#xff0c;那么就加入该事务&#xff0c;否则自…