golang 的strconv包常用方法

目录

[1. 字符串与整数的转换](#1. 字符串与整数的转换)

[2. 字符串与浮点数的转换](#2. 字符串与浮点数的转换)

[3. 布尔值的转换](#3. 布尔值的转换)

[4. 字符串的转义](#4. 字符串的转义)

[5. 补充:rune 类型的使用](#5. 补充:rune 类型的使用)

方法功能详解

代码示例:


1. 字符串与整数的转换
方法名称 功能描述 示例
Atoi 将字符串转换为十进制整数。 strconv.Atoi("123")
Itoa 将整数转换为十进制字符串。 strconv.Itoa(123)
ParseInt 将字符串解析为指定进制的整数。 strconv.ParseInt("520", 10, 64)
ParseUint 将字符串解析为指定进制的无符号整数。 strconv.ParseUint("FF", 16, 64)
FormatInt 将整数转换为指定进制的字符串。 strconv.FormatInt(520, 8)
FormatUint 将无符号整数转换为指定进制的字符串。 strconv.FormatUint(520, 8)
2. 字符串与浮点数的转换
方法名称 功能描述 示例
ParseFloat 将字符串解析为浮点数。 strconv.ParseFloat("3.1415926", 64)
FormatFloat 将浮点数转换为字符串,并格式化。 strconv.FormatFloat(3.1415926, 'f', 3, 32)
3. 布尔值的转换
方法名称 功能描述 示例
FormatBool 将布尔值转换为字符串 "true" 或 "false"。 strconv.FormatBool(true)
4. 字符串的转义
方法名称 功能描述 示例
Quote 返回带双引号的转义字符串。 strconv.Quote("hello world")
QuoteRuneToASCII 返回单个字符的转义表示,仅使用ASCII字符。 strconv.QuoteRuneToASCII('😊')
5. 补充:rune 类型的使用
方法名称 功能描述 示例
rune 表示单个 Unicode 码点。 var r rune = 'A'
FormatUint 转换为整数值查看 Unicode 码点。 fmt.Printf("Unicode code point of '世' is %U\n", '世')

方法功能详解

  1. 字符串与整数的转换

    • strconv.Atoi(s string) :将字符串 s 转换为十进制整数。如果转换成功,返回转换后的整数和 nil 错误;否则,返回 0 和非 nil 错误。
    • strconv.Itoa(i int) :将整数 i 转换为十进制字符串。
    • strconv.ParseInt(s string, base int, bitSize int) :将字符串 s 解析为指定 base 进制的整数,bitSize 参数可以是 0(表示整数是无符号的)、32 或 64,以指定结果的类型。如果 base 为 0,则自动检测进制(默认为十进制,但前缀为 "0x" 的字符串将被解释为十六进制)。
    • strconv.ParseUint(s string, base int, bitSize int) :功能与 ParseInt 类似,但用于无符号整数。
    • strconv.FormatInt(i int64, base int) :将整数 i 转换为指定 base 进制的字符串。
    • strconv.FormatUint(i uint64, base int) :将无符号整数 i 转换为指定 base 进制的字符串。
  2. 字符串与浮点数的转换

    • strconv.ParseFloat(s string, bitSize int) :将字符串 s 解析为浮点数,bitSize 为 32 或 64,以指定结果的类型(float32 或 float64)。
    • strconv.FormatFloat(f float64, format byte, precision, bitSize int) :
      • format:表示格式,可以是 'f'(定点)、'e'(科学计数)、'g'(根据情况选择 'e' 或 'f')。
      • precision:决定结果的小数位数或科学计数法的位数。
      • bitSize:可以是 32 或 64,表示结果的类型。
  3. 布尔值的转换

    • strconv.FormatBool(b bool) :将布尔值 b 转换为字符串 "true" 或 "false"。
  4. 字符串的转义

    • strconv.Quote(s string):返回带双引号的字符串,并转义内部的特殊字符(如 \n、\t 等)。这在需要确保字符串在编程语言语境下正确表示时很有用。
    • strconv.QuoteRuneToASCII(r rune) :返回单个字符的转义表示,仅使用 ASCII 字符。对于 Unicode 字符,返回其十六进制转义形式,如 \U0001F60A。
  5. rune 类型的使用

    • rune :是 Go 语言中用于表示单个 Unicode 码点的内置类型,可以直接赋值字符(如 var r rune = 'A')。
    • fmt.Printf("%U", r) :打印 Unicode 码点的完整表示,例如 U+0041 表示字符 'A'。

代码示例:

复制代码
package main

import (
	"fmt"
	"strconv"
)

func main() {
	n, _ := strconv.Atoi("123")
	fmt.Printf("%d\n", n)

	s1 := strconv.Itoa(123)
	fmt.Printf("%s\n", s1)

	// 字符串、进制、位数
	n2, _ := strconv.ParseInt("520", 10, 64)
	fmt.Printf("%d\n", n2)
	n3, _ := strconv.ParseUint("FF", 16, 64) // 将十六进制字符串"FF"转换为无符号整数
	fmt.Printf("%d\n", n3)

	//
	s2 := strconv.FormatBool(true)
	fmt.Println(s2) // "true"

	//
	s3 := strconv.FormatFloat(3.1415926, 'f', 3, 32)
	fmt.Println(s3)

	//
	s4 := strconv.FormatInt(520, 8)
	fmt.Println(s4)
	s4 = strconv.FormatUint(520, 8)
	fmt.Println(s4)

	//
	s5 := strconv.Quote("hello world")
	fmt.Println(s5) // `"hello world"` 返回带双引号的字符串

	//
	s6 := strconv.QuoteRuneToASCII('!') //单个rune
	fmt.Println(s6)                     // `'!'`

	var dst []byte
	dst = strconv.AppendQuoteRuneToASCII(dst, '😊')
	fmt.Println(string(dst)) // `\U0001F60A`

	// rune类型:rune 是一个内置类型,它是 int32 的别名,主要用于表示单个Unicode字符。
	// 这意味着 rune 可以存储任何Unicode码点(code point),包括所有的国际字符、符号以及表情符号等。
	// 直接定义一个rune变量
	var r rune = 'A'
	fmt.Printf("Type of r is %T and value is %c\n", r, r)
	// 遍历字符串中的rune
	str := "Hello, 世界"
	for _, r := range str {
		fmt.Printf("%c ", r) // 输出: H e l l o ,   世 界
	}
	fmt.Println()
	// 转换为整数值查看Unicode码点
	fmt.Printf("Unicode code point of '世' is %U\n", '世') // 输出: Unicode code point of '世' is U+4E16

}
相关推荐
JWASX2 小时前
【Go】map 源码解析 - group
后端·golang·map·源码分析
联犀1 天前
纯 Go 的 CAD 开源库 go-cad:直接解析 DWG/DXF,现在也能导出 PDF
开发语言·golang·pdf
FungLeo1 天前
成为全栈·Go 后端篇·三轮代码审阅之后:把可读性和证据做成工程规则
golang·go·ast·静态检查·成为全栈·代码审阅
联犀1 天前
联犀 Go SIMD 实战:视频转码从 16.5ms 到 5.46ms
开发语言·golang·音视频
紧跟先前的步伐2 天前
Go AI Agent 实战 28|Agent 的预算、超时与停止条件
开发语言·人工智能·后端·ai·golang
利威尔xu2 天前
2026-11-05-Go内存管理面试
面试·golang
Zenova EdgeOS4 天前
Go 工业边缘错误处理实战:用 errors 构建可追溯错误链
开发语言·数据库·golang
JavaPub-rodert4 天前
从零搭建通用管理后台:ShiyuAdmin 的 Go、React 与 RBAC 实践
开发语言·react.js·golang
microrain4 天前
SagooIoT 的数据接入层只有四张表,却能接住三种外部数据
物联网·golang·数据建模·sagooiot
fly-iot4 天前
【FDE知识库】(4):企业知识库怎么选型,开源知识库分享几个,选择开源协议友好的版本,开发wiki-go项目
golang·开源·开源协议