Golang中int,int64和字符串互转
在 Go 语言开发中,类型转换是日常操作中频繁遇到的场景,尤其是整数类型(int、int64)与字符串(string)之间的转换。本文将通过实例详细讲解这些转换的常用方法,帮助开发者快速掌握类型转换的技巧。
一、int 与 string 互转
1. int 转 string:strconv.Itoa
Itoa(Integer to ASCII)
strconv.Itoa 是将 int 类型转换为 string 类型的便捷函数,其底层实际上是对 strconv.FormatInt 的封装(自动将 int 转换为 int64 后处理)。
示例代码:
package main
import (
"fmt"
"strconv"
)
func main() {
var num int = 10
str := strconv.Itoa(num)
fmt.Printf("int 转 string:值=%s,类型=%T\n", str, str)
// 输出:int 转 string:值=10,类型=string
}
2. string 转 int:strconv.Atoi
strconv.Atoi 用于将字符串转换为 int 类型,其名字来源于 "ASCII to Integer" 的缩写。需要注意的是,该函数会返回两个值:转换后的整数和可能的错误(如字符串格式不合法时)。
示例代码:
func main() {
var str string = "100"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("转换失败:", err)
return
}
fmt.Printf("string 转 int:值=%d,类型=%T\n", num, num)
// 输出:string 转 int:值=100,类型=int
}
注意:如果字符串无法转换为整数(如 "abc" 或 "12.3"),err 会返回具体错误信息,实际开发中必须处理错误。
二、int64 与 string 互转
1. int64 转 string:strconv.FormatInt
int64 转换为 string 需要使用 strconv.FormatInt,该函数需要传入两个参数:待转换的 int64 数值和基数(通常为 10,表示十进制)。
示例代码:
func main() {
var num64 int64 = 100
str := strconv.FormatInt(num64, 10) // 基数 10 表示十进制
fmt.Printf("int64 转 string:值=%s,类型=%T\n", str, str)
// 输出:int64 转 string:值=100,类型=string
}
2. string 转 int64:strconv.ParseInt
strconv.ParseInt 用于将字符串转换为 int64 类型,需要传入三个参数:待转换的字符串、基数(通常为 10)和位数(如 64 表示转换为 int64)。
示例代码:
func main() {
var str string = "100"
num64, err := strconv.ParseInt(str, 10, 64) // 基数 10,目标位数 64
if err != nil {
fmt.Println("转换失败:", err)
return
}
fmt.Printf("string 转 int64:值=%d,类型=%T\n", num64, num64)
// 输出:string 转 int64:值=100,类型=int64
}
| 维度 | strconv.ParseInt(标准库) | conv.Int64Default(自定义) |
|---|---|---|
| 来源 | Go 标准库 strconv 包,内置函数 | 项目自定义工具函数,非标准库 |
| 返回值 | (int64, error):返回值 + 错误,需手动处理错误 | int64:仅返回值,转换失败时返回默认值 |
| 灵活性 | 支持多基数(2-36)、位数控制(bitSize) | 通常仅支持十进制,无位数控制(默认按 int64 处理) |
| 适用场景 | 需严格校验转换结果(如用户输入、关键数据解析) | 转换失败可接受默认值的场景(如配置项、非关键参数解析) |
| 错误处理 | 暴露错误详情(如格式错误、范围溢出) | 隐藏错误,直接返回默认值 |
三、int 与 int64 互转
int 和 int64 同属整数类型,转换方式为显式类型转换(Go 不支持隐式转换),直接通过类型名强制转换即可。
1. int 转 int64
func main() {
var num int = 10
num64 := int64(num) // 显式转换
fmt.Printf("int 转 int64:值=%d,类型=%T\n", num64, num64)
// 输出:int 转 int64:值=10,类型=int64
}
2. int64 转 int
func main() {
var num64 int64 = 100
num := int(num64) // 显式转换
fmt.Printf("int64 转 int:值=%d,类型=%T\n", num, num)
// 输出:int64 转 int:值=100,类型=int
}
注意:int 类型的长度取决于操作系统(32 位系统为 4 字节,64 位系统为 8 字节),而 int64 固定为 8 字节。当 int64 数值超过 int 类型的最大范围时,转换可能导致溢出,需谨慎使用。
四、总结
本文总结了 Go 语言中 int、int64 与 string 之间的转换方法,关键函数和转换规则如下:
| 转换方向 | 方法 / 函数 | 注意事项 |
|---|---|---|
| int → string | strconv.Itoa(num) | 直接转换,无需处理基数 |
| string → int | strconv.Atoi(str) | 需处理错误,字符串必须为合法整数 |
| int64 → string | strconv.FormatInt(num, 10) | 需指定基数(通常为 10) |
| string → int64 | strconv.ParseInt(str, 10, 64) | 需指定基数和位数,处理错误 |
| int ↔ int64 | 显式转换(int64(num) 或 int(num64)) | 注意 int 类型长度限制,避免溢出 |
掌握这些转换方法,能帮助你在处理数据输入输出、配置解析等场景中更加得心应手。实际开发中,务必注意错误处理(尤其是字符串转整数时),以保证程序的健壮性。
到此这篇关于Golang中int,int64和字符串互转的文章就介绍到这了,更多相关Golang中int 字符串互转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
在Golang中正确的修改HTTPRequest的Host的操作方法
我们工作中经常需要通过HTTP请求Server的服务,比如脚本批量请求接口跑数据,由于一些网关策略,部分Server会要求请求中Header里面附带Host参数,所以本文给大家介绍了如何在Golang中正确的修改HTTPRequest的Host,需要的朋友可以参考下2023-12-12


最新评论