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

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值