Golang——Strconv包

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语言标准库文档中文版  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

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

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

SEO之高级搜索指令(三)

初创企业需要建站的朋友看这篇文章,谢谢支持: 我给不会敲代码又想搭建网站的人建议 新手上云 (接上一篇。。。。) 11、link: link:也是SEO 常用的指令,用来搜索某个url的反向链接,既包括内部链接&#xf…

python编程“常识”【pip安装路径、计算、pycharm中的terminal运行前面的PS修改成自己环境】

一、默认的pip install包路径: pip show pip 二、计算 打开cmd,输入: ipython 例如你要计算2的13次方: ok. 三、pycharm中的terminal运行前面的PS修改成自己环境 未修改前: 修改过程: 打开设置找到too…

渗透之sql注入---宽字节注入

宽字节注入原理: 宽字节注入就是在对用户输入进行处理时,将编码方式改变,当某些关键字符被过滤(转义)时,我们可以使用其他的编码在被转义的字符前面,这样就可以组成一个新的字符从而来实现绕过…

【备战软考(嵌入式系统设计师)】10 - 软件工程基础

这一部分的内容是概念比较多,不要理解,去感受。 涉及的知识点是嵌入式系统开发和维护的部分,也就是和管理相关的,而不是具体如何进行嵌入式系统开发的细节。 系统开发生命周期 按照顺序有下面几个阶段,我们主要要记…

WPF容器控件之WrapPanel、布局控件

WrapPanel: 换行panel 子元素进行换行&#xff0c;当子元素的宽度或者高度超出了父元素&#xff0c;才进行换行。高度超出父元素的高度 也会另起一列 属性 Orientation布局方式 实例 <WrapPanel Orientation"Horizontal"><Label>C# 是从 C/C 衍生出来的…

zabbix动作执行命令失效不起作用?

1. zabbix在web界面设置完主机组&#xff0c;主机&#xff0c;监控项&#xff0c;触发器&#xff0c;动作之后 监控项监控到了&#xff0c;触发器触发动作&#xff0c;但是执行的指令不起作用 流程 在zabbix-agent端将nginx服务down掉&#xff0c;zabbix会自动监控并执行重启的…

一文了解Memcache内存分配机制及stats参数

一、Memcache内存分配机制 了解memcached必须了解的三个单位&#xff1a;page、slabs、chunk。 1.1、Page Page为内存分配的最小单位,Memcached的内存分配以page为单位&#xff0c;默认情况下一个page是1M&#xff0c;可以通过-I参数在启动时指定。如果需要申请内存 时&#…

NeRF算法

目录 算法介绍 基本原理 1. 体渲染 2. 多层感知机&#xff08;MLP&#xff09; 3. 位置编码 4. 两阶段层次化体采样 实验展示 代码解析 算法介绍 NeRF&#xff08;Neural Radiance Fields&#xff09;是一种用于从2D图像中重建3D场景的神经网络模型。它通过训练一个深度…

sourceTree push失败

新电脑选择commit and push&#xff0c;报错了&#xff0c;不过commit成功&#xff0c;只不过push失败了。 原因是这个&#xff0c;PuTTYs cache and carry on connecting. 这里的ssh选择的是 PuTTY/Plink&#xff0c;本地没有这个ssh密钥&#xff0c;改换成openSSH&#xff…

SRM系统供应链库存协同提升企业服务水平

SRM系统供应链库存协同是一种以提高供应链整体效率和竞争力为目标的管理方法。它涉及到企业与供应商之间的紧密合作&#xff0c;以实现库存优化、成本降低、风险分担和灵活响应市场变化等目标。 一、SRM供应链库存协同的概念和特点 SRM供应链库存协同是指企业与供应商之间通过…

音转文工具,9.8k star! 【送源码】

我们经常会遇到将音频转为文字的情况&#xff0c;比如在开会时录音的会议纪要、上课时录下的老师讲课内容。虽然网上也有一些在线的工具可以将音频转为文字&#xff0c;但是考虑到数据安全和费用问题&#xff0c;使用起来也不是很方便。 今天了不起给大家介绍一款开源工具——…

毕业论文应该怎么写?推荐几款ai写论文工具

时间过的好快&#xff0c;马上又到了一年一度的毕业季了&#xff0c;对于即将毕业的学生来说毕业论文是一道难过的坎&#xff0c;想到自己为了毕业论文熬的夜&#xff0c;掉的头发&#xff0c;真的深有感触。 不过虽然翟博士给大家的毕业论文设了高门槛&#xff0c;但是随着时…

python之装饰器,模块和文件操作和面向对象

1.装饰器详解(重点) 1_1 装饰器 程序运行的时候的记录 -- 日志 在实际工作中&#xff0c;python这样的东西&#xff0c;是放在服务器上运行的 日志其实就是记录下来当前程序的运行&#xff0c;协助我们定位问题 确定问题的方式&#xff08;通过日志、报错信…

宏的优缺点?C++有哪些技术替代宏?(const)权限的平移、缩小

宏的优缺点&#xff1f; 优点&#xff1a; 1.增强代码的复用性。【减少冗余代码】 2.提高性能&#xff0c;提升代码运行效率。 缺点&#xff1a; 1.不方便调试宏。&#xff08;因为预编译阶段进行了替换&#xff09; 2.导致代码可读性差&#xff0c;可维护性差&#xff0…

Java线程池(更新中)

1.线程池介绍 顾名思义&#xff0c;线程池就是管理一系列线程的资源池&#xff0c;其提供了一种限制和管理线程资源的方式。每个线程池还维护一些基本统计信息&#xff0c;例如已完成任务的数量。 总结一下使用线程池的好处&#xff1a; 降低资源消耗。通过重复利用已创建的…

猎头告诉你正确的“离职流程”

往期热门文章&#xff1a; 1&#xff0c;史上最全猎头技能资料&#xff0c;独家最新放送 2&#xff0c;互联网大厂java面试题知识库&#xff08;100万字&#xff09; 3&#xff0c;一线互联网大数据面试题知识库&#xff08;100万字&#xff09; 4&#xff0c;中国猎头公司排行…

SQL优化详解

目录 插入数据 insert的优化&#xff08;少量数据&#xff09; 批量插入 手动事务提交 主键顺序插入 插入大量数据 主键优化 数据组织方式&#xff1a; 页分裂&#xff1a; 主键顺序插入的方式&#xff1a; 主键乱序插入&#xff1a; 页合并&#xff1a; 主键设计…

HTML5/CSS3粒子效果进度条 超炫酷进度条动画源码

特效介绍 之前我已经分享了几款效果很不错的CSS3进度条插件&#xff0c;比如CSS3 Loading进度条加载动画特效、CSS3 3D进度条按钮 18款精美样式。今天我再来分享一款很有特色的HTML5/CSS3进度条应用。这款进度条插件在播放进度过程中出现粒子效果&#xff0c;就像一些小颗粒从…

二本生如何从大一准备考研!?保姆级全攻略

如果是二本大学&#xff0c;那考研确实是一个很好的机会 如果大家就有考研的打算&#xff0c;那就好好学习&#xff0c;好好学习英语&#xff0c;数学&#xff08;理工科&#xff09;和专业课&#xff0c;这些课程在考研的时候是肯定会考的 特别是英语和数学&#xff08;理工…