Golang中int,int64和字符串互转

 更新时间:2026年02月05日 09:25:10   作者:Kevin666  
在 Go 语言开发中,类型转换是日常操作中频繁遇到的场景,尤其是整数类型(int、int64)与字符串(string)之间的转换。本文将通过实例详细讲解这些转换的常用方法,帮助开发者快速掌握类型转换的

在 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 → stringstrconv.Itoa(num)直接转换,无需处理基数
string → intstrconv.Atoi(str)需处理错误,字符串必须为合法整数
int64 → stringstrconv.FormatInt(num, 10)需指定基数(通常为 10)
string → int64strconv.ParseInt(str, 10, 64)需指定基数和位数,处理错误
int ↔ int64显式转换(int64(num) 或 int(num64))注意 int 类型长度限制,避免溢出

掌握这些转换方法,能帮助你在处理数据输入输出、配置解析等场景中更加得心应手。实际开发中,务必注意错误处理(尤其是字符串转整数时),以保证程序的健壮性。

到此这篇关于Golang中int,int64和字符串互转的文章就介绍到这了,更多相关Golang中int 字符串互转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用go在mangodb中进行CRUD操作

    使用go在mangodb中进行CRUD操作

    这篇文章主要介绍了使用go在mangodb中进行CRUD操作,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Go 1.22对net/http包的路由增强功能详解

    Go 1.22对net/http包的路由增强功能详解

    Go 1.22 版本对 net/http 包的路由功能进行了增强,引入了方法匹配(method matching)和通配符(wildcards)两项新功能,本文将给大家详细的介绍一下Go 1.22对net/http包的路由增强功能,需要的朋友可以参考下
    2024-02-02
  • 一文详解Go语言切片是如何扩容的

    一文详解Go语言切片是如何扩容的

    切片是一个拥有相同类型元素的可变长度的序列,它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。所以本文就来看看Go语言切片是如何扩容的吧
    2023-04-04
  • 一文详解在Go中如何使用Viper来管理配置

    一文详解在Go中如何使用Viper来管理配置

    Viper 是一个功能齐全的 Go 应用程序配置库,支持很多场景。在本文中,我们将深入探讨 Viper 的各种用法和使用场景,以帮助读者更好地了解和使用 Viper 来管理应用程序配置,感兴趣的同学可以参考阅读
    2023-05-05
  • GoFrame框架garray并发安全数组使用开箱体验

    GoFrame框架garray并发安全数组使用开箱体验

    这篇文章主要介绍了GoFrame框架garray并发安全数组使用开箱体验,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 解决golang json解析出现值为空的问题

    解决golang json解析出现值为空的问题

    这篇文章主要介绍了解决golang json解析出现值为空的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go语言为什么很少使用数组原理解析

    Go语言为什么很少使用数组原理解析

    这篇文章主要为大家介绍了Go语言为什么很少使用数组原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 在Golang中正确的修改HTTPRequest的Host的操作方法

    在Golang中正确的修改HTTPRequest的Host的操作方法

    我们工作中经常需要通过HTTP请求Server的服务,比如脚本批量请求接口跑数据,由于一些网关策略,部分Server会要求请求中Header里面附带Host参数,所以本文给大家介绍了如何在Golang中正确的修改HTTPRequest的Host,需要的朋友可以参考下
    2023-12-12
  • Go编程库Sync.Pool用法示例详解

    Go编程库Sync.Pool用法示例详解

    这篇文章主要为大家介绍了Go编程库Sync.Pool用法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Golang性能优化的技巧分享

    Golang性能优化的技巧分享

    性能优化的前提是满足正确可靠、简洁清晰等质量因素,针对 Go语言特性,本文为大家整理了一些Go语言相关的性能优化建议,感兴趣的可以了解一下
    2023-07-07

最新评论