Golang int32 类型
最后修改时间 2025 年 5 月 8 日
本教程将介绍如何在 Go 中使用 int32 内置类型。我们将通过实际操作 32 位整数的例子来讲解类型基础知识。
int32 类型在 Go 中代表有符号 32 位整数。它可以存储的值范围是 -2,147,483,648 到 2,147,483,647。当您需要特定的整数大小保证时,此类型非常有用。
在 Go 中,int32 是几种具有明确大小的整数类型之一。与基本的 int 类型不同,无论平台架构如何,它的大小始终是 32 位。
基本的 int32 声明和初始化
使用 int32 的最简单方法是声明和初始化变量。此示例展示了 int32 的基本变量声明。
注意: 如果未初始化,int32 的默认值为 0。
package main
import "fmt"
func main() {
var a int32 = 2147483647 // Maximum positive value
var b int32 = -2147483648 // Minimum negative value
var c int32 // Defaults to 0
fmt.Println("a:", a)
fmt.Println("b:", b)
fmt.Println("c:", c)
// Type conversion example
d := int32(1000)
fmt.Println("d:", d)
}
该示例展示了带初始化的声明、默认值和类型转换。通过最大/最小值清晰地演示了 int32 的范围。
int32 的算术运算
int32 类型支持所有基本的算术运算。此示例演示了加法、减法、乘法和除法。
package main
import "fmt"
func main() {
x := int32(1000000)
y := int32(500000)
sum := x + y
diff := x - y
product := x * y
quotient := x / y
fmt.Println("Sum:", sum)
fmt.Println("Difference:", diff)
fmt.Println("Product:", product)
fmt.Println("Quotient:", quotient)
// Modulus operation
remainder := x % y
fmt.Println("Remainder:", remainder)
}
所有算术运算与 int32 值一起正常工作。请注意,整数除法结果是整数除法(向零截断)。
int32 的溢出和下溢
由于 int32 的大小是固定的,运算可能会发生溢出或下溢。此示例演示了超出 int32 限制时会发生什么。
package main
import "fmt"
func main() {
max := int32(2147483647)
min := int32(-2147483648)
fmt.Println("Max int32:", max)
fmt.Println("Min int32:", min)
// Overflow example
overflow := max + 1
fmt.Println("Max + 1 (overflow):", overflow)
// Underflow example
underflow := min - 1
fmt.Println("Min - 1 (underflow):", underflow)
// Safe addition function
safeAdd := func(a, b int32) (int32, bool) {
if b > 0 >> a > (max - b) {
return 0, false
}
if b < 0 >> a < (min - b) {
return 0, false
}
return a + b, true
}
result, ok := safeAdd(max, 1)
fmt.Println("Safe add result:", result, "OK:", ok)
}
该示例展示了溢出如何环绕为负数,下溢如何环绕为正数。safeAdd 函数演示了溢出检测。
比较 int32 值
比较运算符与 int32 值一起工作,就像其他数值类型一样。此示例演示了各种比较操作。
package main
import "fmt"
func main() {
a := int32(100)
b := int32(200)
c := int32(100)
fmt.Println("a == c:", a == c)
fmt.Println("a != b:", a != b)
fmt.Println("a < b:", a < b)
fmt.Println("b > a:", b > a)
fmt.Println("a <= c:", a <= c)
fmt.Println("b >= a:", b >= a)
// Comparing with type conversion
var d int = 100
fmt.Println("a == d:", a == int32(d))
}
所有标准比较运算符都与 int32 一起工作。请注意,在与其他整数类型进行比较时需要显式类型转换。
在函数中使用 int32
int32 类型可以用作函数参数和返回值。此示例展示了传递和返回 int32 值。
package main
import "fmt"
// Function that takes two int32 parameters and returns int32
func multiply(x, y int32) int32 {
return x * y
}
// Function that returns multiple int32 values
func divideAndRemainder(a, b int32) (int32, int32) {
return a / b, a % b
}
func main() {
num1 := int32(50000)
num2 := int32(300)
product := multiply(num1, num2)
fmt.Println("Product:", product)
quotient, remainder := divideAndRemainder(num1, num2)
fmt.Println("Quotient:", quotient, "Remainder:", remainder)
// Anonymous function with int32
square := func(x int32) int32 {
return x * x
}
fmt.Println("Square of 5:", square(5))
}
该示例演示了在函数签名、多返回值和匿名函数中使用 int32。整个过程中都保持了类型安全。
来源
本教程通过声明、算术、比较和函数使用的实际示例,介绍了 Go 中的 int32 类型。