数据类型 - Go 基础类型
Go 是静态类型语言,提供了丰富的基础数据类型。理解各种类型及其特性是编写正确 Go 代码的前提。
基础类型
📝 数值类型
package main
import "fmt"
func main() {
// 整数类型
var a int = 42
var b int8 = 127
var c int16 = 32767
var d int32 = 2147483647
var e int64 = 9223372036854775807
// 无符号整数
var f uint = 100
var g uint8 = 255 // 别名:byte
var h uint64 = 18446744073709551615
// 浮点数
var i float32 = 3.14
var j float64 = 3.1415926535
// 复数
var k complex64 = 1 + 2i
var l complex128 = 1 + 2i
fmt.Printf("int: %d, float: %f, complex: %v\n", a, j, l)
}
// 类型大小 (64 位系统)
// int: 8 bytes
// int8: 1 byte
// int16: 2 bytes
// int32: 4 bytes
// int64: 8 bytes
// float32: 4 bytes
// float64: 8 bytes
📝 其他基础类型
package main
import "fmt"
func main() {
// 布尔类型
var isActive bool = true
var isDone bool = false
// 字符串
var name string = "Go"
message := `多行字符串
可以跨行
保留格式`
// 字节 (byte 是 uint8 别名)
var b byte = 'A'
// rune (rune 是 int32 别名,表示 Unicode 码点)
var r rune = '中'
fmt.Printf("Bool: %v, String: %s\n", isActive, name)
fmt.Printf("Byte: %c, Rune: %c\n", b, r)
}
💡 类型要点
- 默认类型: 整数默认 int,浮点默认 float64
- 类型转换: Go 没有隐式类型转换
- byte/rune: byte=uint8, rune=int32
- 字符串: 不可变,UTF-8 编码
类型转换
📝 显式类型转换
package main
import "fmt"
func main() {
// 整数转浮点
var i int = 42
f := float64(i)
// 浮点转整数 (截断)
var x float64 = 3.9
y := int(x) // 3
// 不同宽度整数转换
var a int8 = 10
b := int32(a)
c := int64(a)
// 整数和字符串互转
num := 123
str := fmt.Sprintf("%d", num)
fmt.Printf("int→float: %f, float→int: %d\n", f, y)
fmt.Printf("int→string: %s\n", str)
}