Golang类型转换方法汇总
在Golang中,有哪些常用的类型转换方法?比如string、int、float等基础类型之间如何相互转换?还有interface{}和具体类型之间的类型断言该怎么写?求一个比较全面的汇总和示例代码。
2 回复
Golang类型转换主要有两种方式:
- 显式转换:
T(v),如int(3.14) - 类型断言:
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的写法。
以上方法覆盖了大部分常见场景,根据需求选择合适的方式即可。

