Golang——Strconv包

news2024/12/22 19:49:23
func ParseBool(str string) (value bool, err error)

        strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数:Atoi(),Itoa(),parse系列函数,format系列函数,append系列函数。

        1.1 string与int类型转换

        这一组编程是我们平时编程用的最多的。

        1.1.1 Atoi()

        Atoi()函数用于将字符串类型的整数转换为int类型,函数签名如下:

//Atoi实际是Atoi是ParseInt(s, 10, 0)的简写
func Atoi(s string) (i int, err error)

        如果传入的字符串参数无法转换为int类型,就会返回错误:

        1.1.2 Itoa()

         Itoa()函数用于将int类型数据转换为对应的字符串表示,具体的函数签名如下:

//Itoa是FormatInt(i, 10) 的简写。
func Itoa(i int) string

a的由来:

        这是C语言遗留下来的,由于C语言没有string类型而是用字符数组(array)表示字符串。所以a表示array。 

        1.2 Parse系列函数

        Parse类函数用于转换字符串为给定类型的值:ParseBool(),ParseFloat(),ParseInt(),ParseUint()。

        1.2.1 ParseBool()

        返回字符串表示的bool值,它接受1,0,t,f,T,F,true,false,True,False,TRUE,FLASE,否则返回错误。

        1.2.2 ParseInt()

        返回字符串表示的整数值,接受正负号。

        base指定进制(2到36),如果base为0,则会从字符串前置判断,"0x"是16进制,"0"表示8进制,否则是10进制。

        bitSize指定结果必须能无溢出赋值的整数类型,0,8,16,32,64分别表示int,int8,int16,int32,int64

        返回err是*NumErr类型,如果语法有误,err.Error = ErrSyntax;如果超出类型范围,err.Error = ErrRange。

func ParseInt(s string, base int, bitSize int) (i int64, err error)

        1.2.3 ParseUint()

        ParseUint()类似ParseInt(),但是不接受正负号,用于无符号整型。

func ParseInt(s string, base int, bitSize int) (i int64, err error)

        1.2.4 ParseFloat()

         解析一个浮点数的字符串并返回其值。

        如果s合乎语法规则,函数会返回最接近s表示的一个浮点数(使用IEEE754规范舍入)。

        bitSize指定期望的接受类型,32是float32(返回值可以不改变精确值赋值给float32),64是float64。

        返回值err是*NumErr类型,如果语法有误,err.Error = ErrSyntax,结果超出表示范围,返回值f为+/-Inf,err.Error = ErrRange。

func ParseFloat(s string, bitSize int) (f float64, err error)

        1.2.5 示例

        这些函数都有两个返回值,第一个返回值是转换后的值,第二个返回值为转换失败的错误信息。

package main

import (
	"fmt"
	"log"
	"strconv"
)

func main() {
	data, err := strconv.ParseBool("true")
	if err != nil {
		log.Println("ParseBool fail err ", err)
	} else {
		fmt.Println(data)
	}

	data1, err := strconv.ParseFloat("3.1415926", 64)
	if err != nil {
		log.Println("ParseBool fail err ", err)
	} else {
		fmt.Println(data1)
	}

	data2, err := strconv.ParseInt("-2", 10, 64)
	if err != nil {
		log.Println("ParseBool fail err ", err)
	} else {
		fmt.Println(data2)
	}

	data3, err := strconv.ParseUint("2", 10, 64)
	if err != nil {
		log.Println("ParseBool fail err ", err)
	} else {
		fmt.Println(data3)
	}
}

         输出:

        1.3 Format系列函数

        Format系列函数实现了将给定类型数据格式转化为string类型数据的功能。

        1.3.1 FormatBool()

        根据b的值返回true或false。

func FormatBool(b bool) string

        1.3.2 FormatInt()

        返回i的base进制的字符串表示。base必须在2到36之间。结果中会使用小写字母'a'到'z'表示大于10的数字。 

func FormatInt(i int64, base int) string

        1.3.3 FormatUint()

        是FormatInt的无符号版本。

func FormatUint(i uint64, base int) string

         1.3.4 FormatFloat()

        函数将浮点数表示为字符串并返回。

        bitSize表示f的来源类型32是float32,64是float64,会据此进行舍入。

        fmt表示格式:'f'(-ddd.dddd),'b'(-ddddp+/-ddd 指数为二进制),'e'(-d.dddde+/-dd,十进制指数),'E'(-d.ddddE+/-dd,十进制指数),'g'(指数很大时用'e'格式,否则'f'格式),'G'(指数很大时用'E'格式,否则'f'格式)。

        prec控制精度(排除指数部分):对'f','e','E',它表示小数点后的数字个数;对'g','G',它控制总的数字个数。如果prec为-1,则表示使用最少数量的,但是又必须的数字来表示f。

func FormatFloat(f float64, fmt byte, prec, bitSize int) string

        1.3.5 示例

package main

import (
	"fmt"
	"strconv"
)

func main() {
	str := strconv.FormatBool(true)
	fmt.Printf("str type %T, str : %v\n", str, str)

	str = strconv.FormatInt(-2, 16)
	fmt.Printf("str type %T, str : %v\n", str, str)
	str = strconv.FormatUint(2, 16)
	fmt.Printf("str type %T, str : %v\n", str, str)

	str = strconv.FormatFloat(3.1415926, 'E', -1, 64)
	fmt.Printf("str type %T, str : %v\n", str, str)
}

        1.3.6 其它

  • isPrint()

        返回一个字符是否是可打印的,和unicode.IsPrint一样,r必须是:字母(广义)、数字、标点、符号、ASCII空格。

func IsPrint(r rune) bool

  • CanBackquate()

        返回字符串s是否可以不被修改的表示为一个单行的、没有空格和tab之外控制字符的反引号字符串。

        判断一个字符串是否可以被反引号包裹。反引号包裹会不会管转义字符。

        处理上面列出的函数外,strconv包中还有Append系列,Quote系列等函数。具体可以查看Go语言标准库文档中文版  

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

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

相关文章

休斯《公共管理导论》第4版教材精讲视频网课+考研真题讲解

内容简介 本课程是休斯《公共管理导论》(第4版)精讲班,为了帮助参加研究生招生考试指定考研参考书目为休斯《公共管理导论》(第4版)的考生复习专业课,我们根据教材和名校考研真题的命题规律精心讲解教材章节…

防爆手机在石油化工行业中的作用是什么?

在石油化工行业这一高风险领域中,安全始终被置于首要位置。而在这样的环境中,通信设备的选择尤为关键。防爆手机,作为专为危险环境设计的通信设备,其在石油化工行业中的作用不容忽视。 它不仅能在易燃易爆的复杂环境中稳定运行&am…

攻防世界PHP2

1、打开靶机链接http://61.147.171.105:49513/,没有发现任何线索 2、尝试访问http://61.147.171.105:49513/index.php,页面没有发生跳转 3、尝试将访问 尝试访问http://61.147.171.105:49513/index.phps index.php 和 index.phps 文件之间的主要区别在于…

libcity 笔记:添加自定义dataset

假设我们把libcity/data/dataset/trajectory_dataset.py复制一份到libcity/data/dataset/dataset_subclass/GeolifeDM_dataset.py,里面内容不变,只是把class的名字换了 那其他需要修改哪些内容,使得这个dataset生效呢 libcity/data/dataset/d…

【Vue】vue中将 html 或者 md 导出为 word 文档

原博主 xh-htmlword文档 感谢这位大佬的封装优化和分享,亲测有用!可以去看大佬👇的说明! 前端HTML转word文档,绝对有效!!! 安装 npm install xh-htmlword导入 import handleEx…

uniapp开发的小程序toast被键盘遮挡提示内容无法完全显示问题解决

文章目录 问题描述问题解决参考链接: 问题描述 在开发抖音小程序后,当用户提交反馈后,调用了系统的toast来显示是否提交成功,结果被系统的键盘给盖住,无法显示完全。 即,简单来说:Toast会被弹…

DI/DO/AI/AO混合分布式BACnet IO控制器助力智慧城市

智慧城市建设浪潮中,钡铼电子的BL207 BACnet边缘计算远程I/O控制器正以其独特的技术优势,成为推动城市智能化转型的关键力量。智慧城市不仅仅是概念上的创新,它需要坚实的技术支撑来实现资源的高效利用、环境的可持续发展以及居民生活的便捷与…

Java二叉树征服手册:从新手村到数据结构王者

前情提要:Java二叉树秘技:从零构建至优化大师,玩转算法王国 文章目录 七. 代码示例与分析1. 插入操作的代码示例2. 前序遍历的代码示例3. 删除操作的代码示例 八. 性能优化与注意事项内存管理优化内存使用内存分配 时间复杂度分析常见问题与避…

《大数据分析-数据仓库项目实战》学习笔记

目录 基本概念 数据仓库 数据仓库整体技术架构 数据仓库主题 数据集市 数据仓库的血缘关系 数据仓库元数据管理 数据仓库的指标 数据仓库维度概念 HDFS Flume Hadoop Kafka 数据仓库分层模型 Superset 即席查询 Sqoop Atlas元数据管理 项目需求描述 系统目标…

图神经网络实战(9)——GraphSAGE详解与实现

图神经网络实战(9)——GraphSAGE详解与实现 0. 前言1. GraphSAGE 原理1.1 邻居采样1.2 聚合 2. 构建 GraphSAGE 模型执行节点分类2.1 数据集分析2.2 构建 GraphSAGE 模型 3. PinSAGE小结系列链接 0. 前言 GraphSAGE 是专为处理大规模图而设计的图神经网…

第十篇:数字堡垒:操作系统安全深度解析与实战指南

数字堡垒:操作系统安全深度解析与实战指南 1 *引言 1.1 数字世界的守护者 在遥远的比特海中,有一座名为“操作系统”的数字堡垒,它守护着我们的数据宝藏,确保每一次计算的航行都能安全抵达彼岸。然而,这片海域并非风…

Python中使用嵌套for循环读取csv文件出现问题

如果我们在使用嵌套循环来读取 CSV 文件时遇到了问题,可以提供一些代码示例和出现的具体错误,这样我可以更好地帮助大家解决问题。不过,现在我可以给大家一个基本的示例,演示如何使用嵌套循环来读取 CSV 文件。 问题背景 我需要读…

socket实现TCP UDP

1、socket通信建立流程 1.1、创建服务端流程 使用 socket 函数来创建 socket服务。 使用 bind 函数绑定端口。 使用 listen 函数监听端口。 使用 accept 函数接收客户端请求。 1.2、创建客户端流程 使用 socket 函数来创建 socket 服务。 使用 connect 函数连接到 socke…

YOLOv5-7.0改进(三)添加损失函数EIoU、AlphaIoU、SIoU、WIoU、MPDIoU、NWD

前言 损失函数的改进一直是涨点的重要技巧,本篇博客将使用六个不同损失函数对算法进行改进,并绘制出改进结果对比图~ 往期回顾 YOLOv5-7.0改进(一)MobileNetv3替换主干网络 YOLOv5-7.0改进(二)BiFPN替换…

连续31年稳健增长,73.25%分红率再创新高,伊利的实力是什么?

文 | 螳螂观察 作者 | 易不二 4月29日,伊利股份发布2023年年报及2024年一季报。 年报显示,2023年,伊利实现营业总收入1261.79亿元,归母净利润104.29亿元,双创历史新高,实现连续31年稳健增长。公司拟每10…

腾讯云一年99元服务器,2核2G4M服务器1年99元

近日,腾讯云推出了一项令人瞩目的优惠活动:其2核2G4M的云服务器,现在仅需99元即可享用一年!这一价格无疑在市场上引起了广泛关注,成为了众多企业和个人用户的首选。腾讯云服务器性价比是很高的,我的使用体验…

【漏洞复现】Apahce HTTPd 2.4.49(CVE-2021-41773)路径穿越漏洞

简介: Apache HTTP Server是一个开源、跨平台的Web服务器,它在全球范围内被广泛使用。2021年10月5日,Apache发布更新公告,修复了Apache HTTP Server2.4.49中的一个路径遍历和文件泄露漏洞(CVE-2021-41773)。…

Docker部署Metabase

文章目录 Docker安装MetabaseCentOS7安装Docker获取最新的 Docker 镜像启动Metabase容器在Metabase初始化时查看日志访问Metabase Metabase 的 ClickHouse 驱动程序安装环境简介删除容器创建容器下载click house驱动放入驱动重启容器将元数据库连接到 ClickHouse报错解决 Docke…

6份不用辞职就能赚钱的副业,上班族必看!

在这个经济浪潮中,生活成本的上升与工资增长的缓慢形成了鲜明对比。对于许多上班族来说,寻找额外收入的途径显得尤为迫切。 今天,就让我们一起探索那些适合在业余时间开展的副业,为你的财务自由之路添砖加瓦。 1. 闲鱼二手手机售卖…

Zip压缩归档库-libzip介绍

1.简介 libzip是一个C库,用于读取、创建和修改zip格式的压缩文件。它支持从zip文件中读取、写入、添加和删除文件,还支持密码保护的zip文件。libzip是跨平台的,可以在多种操作系统上使用,包括Linux、Windows和macOS。 常用接口介…