Golang类型转换方法汇总

在Golang中,有哪些常用的类型转换方法?比如string、int、float等基础类型之间如何相互转换?还有interface{}和具体类型之间的类型断言该怎么写?求一个比较全面的汇总和示例代码。

2 回复

Golang类型转换主要有两种方式:

  1. 显式转换:T(v),如 int(3.14)
  2. 类型断言:v.(T),用于接口类型转换 注意:需确保类型兼容,否则会panic。

更多关于Golang类型转换方法汇总的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go语言中,类型转换主要用于在不同类型之间进行显式转换,确保类型安全。以下是常见的类型转换方法汇总:

1. 基本类型之间的转换

使用 T(v) 语法,将值 v 转换为类型 T

var i int = 42
var f float64 = float64(i)  // int → float64
var u uint = uint(f)        // float64 → uint

2. 字符串与数值类型转换

  • 数值 → 字符串:使用 strconv 包:
    s := strconv.Itoa(123)        // int → string
    s2 := strconv.FormatFloat(3.14, 'f', 2, 64) // float64 → string
    
  • 字符串 → 数值
    num, _ := strconv.Atoi("123")       // string → int
    f, _ := strconv.ParseFloat("3.14", 64) // string → float64
    

3. 字符串与字节切片([]byte)

str := "hello"
bytes := []byte(str)  // string → []byte
str2 := string(bytes) // []byte → string

4. 接口类型断言

用于从接口类型提取具体类型:

var val interface{} = "hello"
s := val.(string)   // 安全断言
s, ok := val.(string) // 安全断言,避免panic

5. 自定义类型转换

  • 为自定义类型定义转换方法:
    type MyInt int
    var a MyInt = 5
    b := int(a)  // MyInt → int
    

6. 使用标准库进行复杂转换

  • JSON 转换:使用 encoding/json
    data, _ := json.Marshal(struct{ Name string }{Name: "Alice"})
    var obj map[string]interface{}
    json.Unmarshal(data, &obj)
    

注意事项:

  • Go 不支持隐式类型转换,必须显式操作。
  • 转换时注意精度丢失(如浮点数转整数)。
  • 类型断言失败可能导致 panic,建议使用带 ok 的写法。

以上方法覆盖了大部分常见场景,根据需求选择合适的方式即可。

回到顶部