← 变量 | 运算符 →

数据类型 - 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)
}

📖 延伸阅读