Go语言标准库之strconv的使用

目录
  • 1. string 与 int 类型之间的转换
    • 1.1 Itoa():整型转字符串
    • 1.2 Atoi():字符串转整型
    • 1.3 fmt.Sprintf 其它类型转字符串
  • 2. Parse系列函数
    • 2.1 ParseBool()
    • 2.2 ParseInt()
    • 2.3 ParseUnit()
    • 2.4 ParseFloat()
  • 3. Format 系列函数
    • 3.1 FormatBool()
    • 3.2 FormatInt()
    • 3.3 FormatUint()
    • 3.4 FormatFloat()
  • 4. Append 系列函数

Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换。

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

1. string 与 int 类型之间的转换

字符串和整型之间的转换是我们平时编程中使用的最多的,下面就来介绍一下具体的操作。

1.1 Itoa():整型转字符串

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

func Itoa(i int) string

代码示例如下:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    num := 100
    str := strconv.Itoa(num)
    log.Printf("类型:%T,值:%v\n", str, str) // 类型:string,值:100
}

1.2 Atoi():字符串转整型

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

func Atoi(s string) (i int, err error)

通过函数签名可以看出 Atoi() 函数有两个返回值, i 为转换成功的整型, err 在转换成功是为空转换失败时为相应的错误信息。

代码示例:

func main() {
    str1 := "110"
    str2 := "s100"

    num1, err := strconv.Atoi(str1)
    if err != nil {
        fmt.Printf("%v 转换失败!", str1)
    } else {
        fmt.Printf("类型:%T,值:%v\n", num1, num1)
    }

    num2, err := strconv.Atoi(str2)
    if err != nil {
        fmt.Printf("%v 转换失败!", str2)
    } else {
        fmt.Printf("类型:%T,值:%v\n", num2, num2)
    }
}

输出:

类型:int,值:110
s100 转换失败!

1.3 fmt.Sprintf 其它类型转字符串

其他类型转换成为string类型除了用strconv包,还可以用fmt.Sprintf函数:

package main

import (
    "fmt"
)

func main() {
    s2 := fmt.Sprintf("%d", 456)
    println(s2)
}

2. Parse系列函数

Parse系列函数用于将字符串转换为指定类型的值,其中包括 ParseBool() 、 ParseFloat() 、 ParseInt() 、 ParseUint()。

2.1 ParseBool()

ParseBool() 函数用于将字符串转换为 bool 类型的值,它只能接受 1 、 0 、 t 、 f 、 T 、 F 、 true 、 false 、 True 、 False 、 TRUE 、 FALSE ,其它的值均返回错误,函数签名如下。

func ParseBool(str string) (value bool, err error)

代码示例:

func main() {
    str1 := "110"

    boo1, err := strconv.ParseBool(str1)
    if err != nil {
        fmt.Printf("str1: %v\n", err)
    } else {
        fmt.Println(boo1)
    }

    str2 := "t"
    boo2, err := strconv.ParseBool(str2)
    if err != nil {
        fmt.Printf("str2: %v\n", err)
    } else {
        fmt.Println(boo2)
    }
}

输出:

str1: strconv.ParseBool: parsing "110": invalid syntax
true

2.2 ParseInt()

ParseInt() 函数用于返回字符串表示的整数值(可以包含正负号),函数签名如下:

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

参数说明:

  • 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 main() {
    str := "-11"

    num, err := strconv.ParseInt(str, 10, 0)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(num)
    }
}

2.3 ParseUnit()

ParseUint() 函数的功能类似于 ParseInt() 函数,但 ParseUint() 函数不接受正负号,用于无符号整型,函数签名如下:

func ParseUint(s string, base int, bitSize int) (n uint64, err error)

代码示例:

func main() {
    str := "11"

    num, err := strconv.ParseUint(str, 10, 0)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(num) // 11
    }
}

2.4 ParseFloat()

ParseFloat()函数用于将一个表示浮点数的字符串转换为 float类型,函数签名如下。

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

参数说明:

  • 如果 s 合乎语法规则,函数会返回最为接近 s 表示值的一个浮点数(使用 IEEE754 规范舍入)。
  • bitSize 指定了返回值的类型, 32 表示 float32 , 64 表示 float64 ;
  • 返回值 err 是 *NumErr 类型的,如果语法有误 err.Error=ErrSyntax ,如果返回值超出表示范围,返回值 f 为 ±Inf,err.Error= ErrRange 。
func main() {
    str := "3.1415926"
    num, err := strconv.ParseFloat(str, 64)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(num)    // 3.1415926
    }
}

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

3. Format 系列函数

Format 系列函数实现了将给定类型数据格式化为字符串类型的功能,其中包括 FormatBool() 、 FormatInt() 、 FormatUint()、 FormatFloat() 。

3.1 FormatBool()

FormatBool() 函数可以一个 bool 类型的值转换为对应的字符串类型,函数签名如下。

func FormatBool(b bool) string

代码示例:

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

3.2 FormatInt()

FormatInt() 函数用于将整型数据转换成指定进制并以字符串的形式返回,函数签名如下:

func FormatInt(i int64, base int) string

其中,参数 i 必须是 int64 类型,参数 base 必须在 2到 36 之间,返回结果中会使用小写母“a”到“z”表示大于 10的数字。

代码示例:

func main() {
    var num int64 = 100
    str := strconv.FormatInt(num, 16)
    fmt.Printf("type:%T,value:%v\n ", str, str)
    // type:string,value:64
}

3.3 FormatUint()

FormatUint() 函数与 FormatInt() 函数的功能类似,但是参数 i 必须是无符号的 uint64 类型,函数签名如下。

func FormatUint(i uint64, base int) string

示例代码:

func main() {
    var num uint64 = 110
    str := strconv.FormatUint(num, 16)
    fmt.Printf("type:%T,value:%v\n ", str, str)
    // type:string,value:6e
}

3.4 FormatFloat()

FormatFloat() 函数用于将浮点数转换为字符串类型,函数签名如下:

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

参数说明:

  • 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 控制精度(排除指数部分):当参数 fmt 为“f”、“e”、“E”时,它表示小数点后的数字个数;当参数 fmt 为“g”、“G”时,它控制总的数字个数。如果 prec 为 -1,则代表使用最少数量的、但又必需的数字来表示 f。
func main() {
    var num float64 = 3.1415926
    str := strconv.FormatFloat(num, 'E', -1, 64)
    fmt.Printf("type:%T,value:%v\n ", str, str)
    // type:string,value:3.1415926E+00
}

4. Append 系列函数

Append 系列函数用于将指定类型转换成字符串后追加到一个切片中,其中包含 AppendBool() 、 AppendFloat() 、 AppendInt() 、 AppendUint() 。

Append 系列函数和 Format系列函数的使用方法类似,只不过是将转换后的结果追加到一个切片中。

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // 声明一个slice
    b10 := []byte("int (base 10):")

    // 将转换为10进制的string,追加到slice中
    b10 = strconv.AppendInt(b10, -42, 10)
    fmt.Println(string(b10))
    b16 := []byte("int (base 16):")
    b16 = strconv.AppendInt(b16, -42, 16)
    fmt.Println(string(b16))
}

输出:

int (base 10):-42
int (base 16):-2a

到此这篇关于Go语言标准库之strconv的使用的文章就介绍到这了,更多相关Go strconv使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Go语言strconv包实现字符串和数值类型的相互转换

    在实际开发中我们往往需要对一些常用的数据类型进行转换,如 string.int.int64.float 等数据类型之间的转换,Go语言中的 strconv 包为我们提供了字符串和基本数据类型之间的转换功能. strconv 包中常用的函数包括 Atoi().Itia().parse 系列函数.format 系列函数.append 系列函数等,下面就来分别介绍一下. string 与 int 类型之间的转换 字符串和整型之间的转换是我们平时编程中使用的最多的,下面就来介绍一下具体的操作. Itoa

  • Go语言中strings和strconv包示例代码详解

    前缀和后缀 HasPrefix判断字符串s是否以prefix开头: strings.HaxPrefix(s string, prefix string) bool 示例: package main import ( "fmt" "strings" ) func main() { pre := "Thi" str1 := "This is a Go program!" fmt.Println(strings.HasPrefix(

  • GoLang中Strconv库有哪些常用方法

    目录 Strconv string与int类型转换 Parse 系列函数 Format系列函数 其他 Strconv strconv包实现了基本数据类型和其字符串表示的相互转换. 更多函数请查看 官方文档 中文文档 string与int类型转换 Atoi() Atoi()函数用于将字符串类型的整数转换为int类型,等价于ParseInt (s, 10, 0),转换为 int 类型. func Atoi(s string) (i int, err error) v := "10" if

  • 详解Go语言strconv与其他基本数据类型转换函数的使用

    目录 前言 strconv string 与 int 之间的转换 Itoa:int 类型转 string 类型 Atoi:string 类型转 int 类型 FormatInt:将数字转成指定进制数并以 string 类型返回 ParseInt:给定基数(进制数)和位数,返回对应十进制的值 string 与 float 之间的转换 ParseFloat:字符串类型转浮点型类型 FormatFloat:根据格式 fmt 和精度 prec 将浮点数 f 转换为字符串 string 与 bool 之间

  • golang中之strconv包的具体使用方法

    在编程过程中,我们常常需要用到字符串与其它类型的转换,strconv包可以帮我们实现此功能. 1.string -> int 使用方法:func Atoi(s string) (i int, err error) 测试代码: func Atoi(s string) (i int, err error) numStr := "999" num, err := strconv.Atoi(numStr) if err != nil { fmt.Println("can't c

  • 详解Go strconv包

    strconv包 该包主要实现基本数据类型与其字符串表示的转换. 常用函数为Atoi().Itia().parse系列.format系列.append系列. 更多函数请查看官方文档. string与int类型转换 Atoi() 该函数用于将字符串类型的整数转换为int类型,函数签名如下: func Atoi(s string) (i int, err error) 如果传入的字符串参数无法转换为int类型,就会返回错误. 示例演示: package main import ( "fmt"

  • golang中strconv.ParseInt函数用法示例

    本文实例讲述了golang中strconv.ParseInt函数用法.分享给大家供大家参考,具体如下: golang strconv.ParseInt 是将字符串转换为数字的函数,功能灰常之强大. 参数1 数字的字符串形式 参数2 数字字符串的进制 比如二进制 八进制 十进制 十六进制 参数3 返回结果的bit大小 也就是int8 int16 int32 int64 func ParseInt(s string, base int, bitSize int) (i int64, err erro

  • Go语言标准库之strconv的使用

    目录 1. string 与 int 类型之间的转换 1.1 Itoa():整型转字符串 1.2 Atoi():字符串转整型 1.3 fmt.Sprintf 其它类型转字符串 2. Parse系列函数 2.1 ParseBool() 2.2 ParseInt() 2.3 ParseUnit() 2.4 ParseFloat() 3. Format 系列函数 3.1 FormatBool() 3.2 FormatInt() 3.3 FormatUint() 3.4 FormatFloat() 4.

  • go语言标准库fmt包的一键入门

    目录 ️ 实战场景 Print 系列函数 Fprint 函数 Sprint 函数 Errorf 函数 ️ 格式化占位符 通用部分 整型相关 浮点数与复数 布尔型和指针 ️ 标准输入 fmt.Scan fmt.Scanf fmt.Scanln Fscan 和 Sscan 系列函数 ️ 实战场景 本篇博客为大家带来 Go 语言中的 fmt 包,该包实现了标准输入和输出两大部分内容. 首先对外输出,包含 Print,Fprint,Sprint,Errorof 等内容,其中 Print 在之前的博客中已

  • 一篇文章带你搞懂Go语言标准库Time

    目录 前言 时间类型 时间戳 时间间隔 操作时间 Add Sub Equal Before After 定时器 时间格式化 解析字符串格式的时间 总结 前言 在编程过程中,我们经常会用到与时间和日期相关的各种需求,下面来介绍 Go 语言中有关时间的一些基本用法. 时间类型 time.Time 类型表示时间.可以通过 time.Now() 函数获取当前的时间对象,然后获取时间对象的年月日时分秒等信息. 示例代码如下: func main() { now := time.Now() //获取当前时间

  • 一文带你了解Go语言标准库math和rand的常用函数

    目录 math 标准库 Abs 函数 Max 函数 Min 函数 Ceil Floor 函数 Trunc 函数 Dim 函数 Mod 函数 Pow 函数 Sqrt 函数 Cbrt 函数 Modf 函数 rand 代码示例 小结 math 标准库 math 标准库提供了一些 常量如 int64 类型的最大值.float64 类型的最大值等,和常用的数学计算函数. 常用函数 函数 说明 Abs(x float64) float64 传入 x 参数,返回 x 的绝对值 Max(x, y float64

  • 一文带你了解Go语言标准库strings的常用函数和方法

    目录 strings 库 高效拼接字符串 大小写转换 比较两个字符串 字符串的替换 按照某个分割标识分割字符串 去掉字符串左右两边的空格 将字符串[左边]或[右边]或[左右两边]所指定的字符(串)去掉 判断字符串是否以指定的字符串开头 判断字符串是否以指定的字符串结束 将字符串切片中的元素以指定字符串连接生成新字符串 查找子串是否存在于指定的字符串中 小结 strings 库 strings 库包含了许多高效的字符串常用操作的函数和方法,巧用这些函数与方法,能极大的提高我们程序的性能.下面介绍一

  • c语言标准库中字符转换函数和数字转换函数

    字符转换为数字: #include<stdlib.h> atoi();将字符转换为整型   例:char ch1;int i=atoi(ch1); atol();将字符转化为长整型  例:char ch2;long l=atol(ch2); atof();将字符转化为浮点型  例:char ch3;float f=atof(ch3); strtod(); 将字符串转化为双精度类型  例:string str1:double d=strtod(str1); strtol(); 将字符串转化为长整

  • 如何调用C标准库的exit函数详解

    编译大于运算符 原定的计划中这一篇应当是要讲如何编译if表达式的,但是我发现没什么东西可以作为if的test-form的部分的表达式,所以觉得,要不还是先实现一下比较两个数字这样子的功能吧.说干就干,我决定用大于运算符来作为例子--大于运算符就是指>啦.所以,我的目标是要编译下面这样的代码 (> 1 2) 并且比较之后的结果要放在EAX寄存器中.鉴于现在这门语言还非常地简陋,没有布尔类型这样子的东西,所以在此仿照C语言的处置方式,以数值0表示逻辑假,其它的值表示逻辑真.所以上面的表达式在编译成

  • vs2019+win10配置boost库的详细教程

    boost介绍 boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化.不过对比STL,boost更加实用.  STL集中在算法部分,而boost包含了不少工具类,可以完成比较具体的工作. Boost库是为C++语言标准库提供扩展的一些C++程序库的总称.Boost库由Boost社区组织开发.维护.其目的是为C++程序员提供免费.同行审查的.可移植的程序库.Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能.Boost库使用B

  • VS2019配置BOOST的方法(v1.70.0库)

    安装编译Boost c++ library 安装Boost库 官网下载:https://www.boost.org/users/history/version_1_70_0.html 最新版本1.70.0. (低于1.7.0的版本可能在vs2019中支持不完善,编译或运行时发生不可预料的bug) 下载好后,解压,得到文件目录如下图,找到其中的bootstrap.bat文件: 双击运行可能出现闪退,最好的办法(亲测有效): 选择vs2019 -> visual studio tools -> v

  • Python绘图之turtle库的基础语法使用

    前言 Python语言的turtle库是一个直观有趣的图形绘制函数库,是python语言标准库之一. turtle库也叫海龟库,是turtle绘图体系的Python实现.turtle库是Python语言的标准库之一,是入门级的图形绘制函数库. turtle绘图体系:也叫海龟绘图系统,它是在1969年诞生,主要用于程序设计入门的一种绘图方式. Python计算生态 = 标准库 + 第三方库 标准库:随解释器直接安装到操作系统中的功能模块. 第三方库:需要经过安装才能使用的功能模块. turtle官

随机推荐