基本类型与转换
int/float/string/bool、类型转换(显式)、rune/byte 别名
基本类型与转换
Go 的类型系统严格——没有隐式类型转换,int 和 int64 是不同类型。但这消除了大量隐蔽 bug。
学完本章你将: 掌握 int/float/string/bool、显式类型转换、rune/byte。
基本类型
go
package main
import "fmt"
func main() {
// 整数(有符号)
var i int = 42 // 平台相关(32 或 64 位)
var i8 int8 = 127 // -128~127
var i64 int64 = 100000
// 无符号整数
var u uint = 42
var b byte = 255 // byte = uint8
var r rune = '中' // rune = int32(Unicode 码点)
// 浮点
var f32 float32 = 3.14
var f64 float64 = 2.718281828
// 字符串
var s string = "Hello, 世界"
// 布尔
var ok bool = true
fmt.Printf("i=%d, f64=%.2f, s=%s\n", i, f64, s)
}
显式类型转换(必须!)
go
var a int = 10
var b float64 = float64(a) // ✅ 显式转换
// var b float64 = a // ❌ 编译错误!不能隐式转换
var c int64 = 100
var d int = int(c) // 即使 int 和 int64 也要显式转
// 字符串 ↔ 数字
num, _ := strconv.Atoi("42") // string → int
str := strconv.Itoa(42) // int → string
f, _ := strconv.ParseFloat("3.14", 64) // string → float64
类型别名
go
type UserID int64 // 定义新类型
type Age = int // 类型别名(完全等价)
var uid UserID = 100
// var x int = uid // ❌ 新类型不能直接赋值
var x int = int(uid) // ✅ 需要显式转换