全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-13 6 分钟 ✍️ juanwangdev

Go类型转换

Go要求显式类型转换,确保类型安全。

数值类型转换

整数转换

Go
var a int32 = 100
var b int64 = int64(a)  // 显式转换

var c int = 100
var d int8 = int8(c)    // 显式转换

// 注意:超出范围截断
var e int = 300
var f int8 = int8(e)
fmt.Println(f)  // 44(截断)

浮点与整数转换

Go
var a float64 = 3.9
var b int = int(a)  // 截断取整
fmt.Println(b)  // 3

var c int = 10
var d float64 = float64(c)
fmt.Println(d)  // 10.0

浮点转整数截断小数部分,非四舍五入。

不同精度浮点转换

Go
var a float32 = 3.14
var b float64 = float64(a)  // 精度提升

var c float64 = 3.141592653
var d float32 = float32(c)  // 精度丢失
fmt.Println(d)  // 3.1415927

字符串转换

数值转字符串

Go
import "strconv"

// 整数转字符串
s := strconv.Itoa(42)
fmt.Println(s)  // "42"

// 或使用FormatInt
s := strconv.FormatInt(42, 10)  // 10进制

// 浮点转字符串
s := strconv.FormatFloat(3.14, 'f', 2, 64)
fmt.Println(s)  // "3.14"

字符串转数值

Go
import "strconv"

// 字符串转整数
n, err := strconv.Atoi("42")
fmt.Println(n)  // 42

// 字符串转整数(指定进制)
n, err := strconv.ParseInt("42", 10, 64)

// 字符串转浮点
f, err := strconv.ParseFloat("3.14", 64)
fmt.Println(f)  // 3.14

字符与字符串

Go
// 字符转字符串
var c rune = 'A'
s := string(c)
fmt.Println(s)  // "A"

// 字符串转字节切片
s := "Hello"
b := []byte(s)

// 字节切片转字符串
b := []byte{'H', 'i'}
s := string(b)
fmt.Println(s)  // "Hi"

接口类型断言

类型断言

Go
var i interface{} = 42

// 断言类型
n, ok := i.(int)
if ok {
    fmt.Println("是int:", n)
}

// 不安全断言(失败panic)
n := i.(int)  // 成功返回值
s := i.(string)  // panic!

类型switch

Go
var i interface{} = "hello"

switch v := i.(type) {
case int:
    fmt.Println("int:", v)
case string:
    fmt.Println("string:", v)
default:
    fmt.Println("未知类型")
}

strconv函数汇总

函数用途
strconv.Itoaint转string
strconv.Atoistring转int
strconv.FormatIntint64转string
strconv.ParseIntstring转int64
strconv.FormatFloatfloat转string
strconv.ParseFloatstring转float
strconv.FormatBoolbool转string
strconv.ParseBoolstring转bool

类型转换规则

转换类型方式说明
数值↔数值T(v)显式转换
字符↔字符串string(c)rune转string
字符串↔字节[]byte(s)转换编码
字符串↔数值strconv包函数
接口↔具体类型断言i.(T)

要点总结

  • Go无隐式转换,必须显式转换
  • 语法:目标类型(值)
  • 数值转换超出范围会截断
  • 浮点转整数截断小数
  • 字符串与数值转换用strconv
  • 类型断言用于接口转具体类型
  • 安全断言用ok返回值检查

📝 发现内容有误?点击此处直接编辑

← 上一篇 Go常量定义与iota
下一篇 → Go零值机制
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库