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 []byte
	slice = 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

相关推荐

  1. Golang学习笔记01

    2024-01-10 00:50:01       7 阅读
  2. Golang学习笔记--Gin框架

    2024-01-10 00:50:01       14 阅读
  3. golang学习笔记——go互斥锁

    2024-01-10 00:50:01       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-10 00:50:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-10 00:50:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-10 00:50:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-10 00:50:01       20 阅读

热门阅读

  1. arch modelsim 解决无法运行

    2024-01-10 00:50:01       32 阅读
  2. 算法学习:动态规划之爬楼梯问题

    2024-01-10 00:50:01       41 阅读
  3. 学习Go语言Web框架Gee总结--中间件Middleware(五)

    2024-01-10 00:50:01       52 阅读
  4. 深入PostgreSQL:高级函数用法探索

    2024-01-10 00:50:01       44 阅读
  5. 【代码学习】einops,更简单的张量变化

    2024-01-10 00:50:01       37 阅读
  6. 详解FreeRTOS:内存管理(高级篇—8)

    2024-01-10 00:50:01       42 阅读
  7. 使用python生成一个月度账单消费金额柱状图表

    2024-01-10 00:50:01       36 阅读