数值类型 - Numeric Types

← 返回数据类型

Go 语言提供多种数值类型,包括整型和浮点型。

整型

平台相关整型

var i int = 42   // 有符号,平台相关(32位系统为int32,64位系统为int64)
var u uint = 42  // 无符号,平台相关

有符号整型

var i8  int8  = 127           // 8位有符号 (-128 到 127)
var i16 int16 = 32767         // 16位有符号 (-32768 到 32767)
var i32 int32 = 2147483647    // 32位有符号 (-21亿 到 21亿)
var i64 int64 = 9000000000    // 64位有符号

无符号整型

var u8  uint8  = 255          // 8位无符号 (0 到 255),别名 byte
var u16 uint16 = 65535        // 16位无符号 (0 到 65535)
var u32 uint32 = 4294967295   // 32位无符号 (0 到 42亿)
var u64 uint64 = 18446744073709551615  // 64位无符号

整型选择指南

场景推荐类型说明
一般计数、索引int性能最优,跨平台兼容
ID、数据库主键uint64无符号64位整数,保证不溢出,跨平台一致
字节处理byte明确语义
文件大小int64文件可能超过 4GB
端口号uint160-65535

浮点型

浮点类型

var f32 float32 = 3.14              // IEEE-754 32位浮点数
var f64 float64 = 3.141592653589793 // IEEE-754 64位浮点数

浮点型选择

建议 除非有特殊内存限制,否则 始终使用 float64

类型精度范围使用场景
float32~7位小数±3.4e38内存受限环境
float64~15位小数±1.8e308默认选择

数值字面量

// 十进制
var dec = 42

// 八进制(以0开头)
var oct = 052  // = 42

// 十六进制(以0x开头)
var hex = 0x2A  // = 42

// 浮点数
var f1 = 3.14
var f2 = .5     // = 0.5
var f3 = 1.     // = 1.0

// 科学计数法
var e1 = 1.2e3  // = 1200
var e2 = 1.2e-3 // = 0.001

类型转换

var i int = 42
var f float64 = float64(i)
var u uint = uint(i)

// 注意:浮点转整数会截断小数部分
var x float64 = 3.9
var y int = int(x)  // y = 3,不是4

警告 数值类型不会自动转换 ,必须显式转换。

练习

  1. 编写函数计算圆的面积,使用 float64
  2. 实现字节转换为 KB、MB、GB 的函数
  3. 创建演示不同整型溢出的程序

← 返回数据类型 | 字符串 →