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
类型。