欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 【Go语言基础【11】】基本类型转换

【Go语言基础【11】】基本类型转换

2025/6/9 20:24:24 来源:https://blog.csdn.net/hiliang521/article/details/148491759  浏览:    关键词:【Go语言基础【11】】基本类型转换

文章目录

  • 零、转换速查
  • 一、基本类型转换规则
    • 1. 数值类型转换
      • (1)同类转换(精度可能丢失)
      • (2)跨类转换(需借助标准库)
    • 2. 自定义类型转换
  • 二、`strconv` 包:字符串与类型转换
    • 1. 字符串转数值
    • 2. 数值转字符串
      • (1)转字符串:`Itoa` / `FormatInt`
      • (2)转浮点数为字符串:`FormatFloat`

零、转换速查

转换方向方法/函数示例
数值→字符串strconv.Itoa / FormatIntstr := strconv.Itoa(123)
字符串→数值strconv.Atoi / ParseIntnum, _ := strconv.Atoi("456")
浮点→字符串strconv.FormatFloatstr := strconv.FormatFloat(3.14, 'f', 2, 64)
字符串→浮点strconv.ParseFloatf, _ := strconv.ParseFloat("3.14", 64)
自定义类型→基础类型显式转换(目标类型(源变量)type MyInt int; i := int(MyInt(10))
进制转换ParseInt/FormatInt 指定basebinStr := strconv.FormatInt(10, 2)(十进制10→二进制"1010")

 

一、基本类型转换规则

Go语言是强类型语言,不同类型变量之间赋值需显式转换,格式为:
目标类型(源类型变量)

var a float64 = 3.14
var b int = int(a) // 显式转换:float64 → int

1. 数值类型转换

(1)同类转换(精度可能丢失)

  • 整型 ↔ 浮点型
    • 浮点型转整型:直接截断小数部分(不四舍五入)。
      var f float64 = 5.9
      var i int = int(f) // i = 5
      
    • 有符号整型 ↔ 无符号整型:按二进制位直接转换(可能出现负数变正数)。
      var x int8 = -1  // 二进制:11111111(补码)
      var y uint8 = uint8(x) // y = 255(无符号解释)
      

(2)跨类转换(需借助标准库)

  • 字符串 ↔ 数值:使用 strconv 包(见下文详细说明)。
    str := "123"
    num, err := strconv.Atoi(str) // string → int
    

 

2. 自定义类型转换

通过 type 关键字定义的自定义类型,与原类型视为不同类型,需显式转换。

// 定义自定义类型 Age,底层为 int
type Age int
var age Age = 25
var num int = int(age) // 自定义类型 → 基础类型
var newAge Age = Age(num) // 基础类型 → 自定义类型

 

二、strconv 包:字符串与类型转换

strconv 包提供字符串与基本类型(boolintfloat 等)的相互转换功能,支持进制转换和精度控制。

1. 字符串转数值

(1)转整数:Atoi / ParseInt

  • Atoi(s string) (int, error):将字符串转为 int(默认十进制)。
    num, err := strconv.Atoi("123") // num=123, err=nil
    
  • ParseInt(s string, base int, bitSize int) (int64, error)
    • base:进制(2-36,0 表示自动判断前缀)。
    • bitSize:结果类型(0→int/uint,8→int8,16→int16 等)。
    // 二进制字符串转 int16
    i, err := strconv.ParseInt("1010", 2, 16) // i=10, err=nil
    
     

(2)转无符号整数:ParseUint

u, err := strconv.ParseUint("255", 10, 8) // uint8类型,值255

 

(3)转浮点数:ParseFloat

f, err := strconv.ParseFloat("3.14", 64) // float64类型,值3.14

 
(4)转布尔值:ParseBool

b, err := strconv.ParseBool("true") // b=true, err=nil

 

2. 数值转字符串

(1)转字符串:Itoa / FormatInt

  • Itoa(i int) string:将 int 转为十进制字符串。
    str := strconv.Itoa(123) // str="123"
    
  • FormatInt(i int64, base int) string:按指定进制转字符串。
    binStr := strconv.FormatInt(10, 2) // 二进制:"1010"
    hexStr := strconv.FormatInt(255, 16) // 十六进制:"ff"
    

(2)转浮点数为字符串:FormatFloat

// 格式说明:'f'表示固定小数位,prec=2表示保留2位小数
str := strconv.FormatFloat(3.1415, 'f', 2, 64) // "3.14"

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词