Golang int 类型
最后修改时间 2025 年 5 月 8 日
本教程将介绍如何在 Go 中使用 int
内置类型。我们将通过实际示例来讲解整数基础知识以及如何处理数字。
int
类型在 Go 中表示带符号的整数值。它的大小取决于平台,在 32 位系统上为 32 位,在 64 位系统上为 64 位。Go 还提供了明确大小的整数类型,如 int8、int16 等。
在 Go 中,int
是最常用的整数类型。它适用于大多数整数运算,并在各种平台上提供良好的性能。值的范围取决于系统架构。
基本整数声明和初始化
int
最简单的用法是声明和初始化变量。此示例演示了基本的整数运算。
注意: Go 的类型系统非常严格,因此整数不能与其他类型混合。
package main import "fmt" func main() { var a int = 42 var b int = 13 sum := a + b difference := a - b product := a * b quotient := a / b remainder := a % b fmt.Println("Sum:", sum) fmt.Println("Difference:", difference) fmt.Println("Product:", product) fmt.Println("Quotient:", quotient) fmt.Println("Remainder:", remainder) }
该示例展示了整数的基本算术运算。当两个操作数都是整数时,Go 会执行整数除法,并丢弃任何余数。取模运算符 (%) 返回除法的余数。
整数类型转换
Go 要求在不同数字类型之间进行显式类型转换。此示例演示了 int 与其他数字类型之间的转换。package main import ( "fmt" "math" ) func main() { var i int = 42 var f float64 = float64(i) var u uint = uint(math.Abs(float64(i))) fmt.Printf("int: %d, float64: %f, uint: %d\n", i, f, u) // Converting back to int f = 3.14 i = int(f) fmt.Println("Float to int:", i) // Truncates decimal part }
该示例显示了 int、float64 和 uint 之间的转换。请注意,从浮点数转换为整数会截断小数部分,而不进行四舍五入。即使在兼容的数字类型之间,也需要进行显式转换。
整数溢出和下溢
Go 整数具有固定大小,可能会发生溢出或下溢。此示例演示了整数的限制和溢出行为。
package main import ( "fmt" "math" ) func main() { maxInt := math.MaxInt64 minInt := math.MinInt64 fmt.Println("Max int64:", maxInt) fmt.Println("Min int64:", minInt) // Overflow example overflow := maxInt + 1 fmt.Println("Overflow result:", overflow) // Wraps around // Underflow example underflow := minInt - 1 fmt.Println("Underflow result:", underflow) // Wraps around }
该示例展示了整数的限制和溢出行为。当整数溢出或下溢时,它会回绕到相反的极限。在算术运算中考虑这一点很重要,以防止出现意外结果。
整数的位运算
Go 为整数提供了全面的位运算。此示例演示了常见的位操作技术。
package main import "fmt" func main() { var a int = 0b1100 // Binary literal (12 in decimal) var b int = 0b1010 // Binary literal (10 in decimal) fmt.Printf("a: %b (%d)\n", a, a) fmt.Printf("b: %b (%d)\n", b, b) // Bitwise operations and := a & b or := a | b xor := a ^ b shiftLeft := a << 2 shiftRight := a >> 1 fmt.Printf("AND: %b (%d)\n", and, and) fmt.Printf("OR: %b (%d)\n", or, or) fmt.Printf("XOR: %b (%d)\n", xor, xor) fmt.Printf("Shift left: %b (%d)\n", shiftLeft, shiftLeft) fmt.Printf("Shift right: %b (%d)\n", shiftRight, shiftRight) }
该示例展示了各种位运算。Go 支持 AND、OR、XOR 和位移操作。二进制文字(0b 前缀)使代码中的位模式更易读。
整数解析和格式化
在编程中,字符串与整数之间的转换很常见。此示例演示了将字符串解析为整数以及格式化整数。
package main import ( "fmt" "strconv" ) func main() { // String to int numStr := "42" num, err := strconv.Atoi(numStr) if err != nil { fmt.Println("Conversion error:", err) return } fmt.Println("Parsed number:", num) // Int to string result := strconv.Itoa(num * 2) fmt.Println("Formatted result:", result) // Parse with base hexStr := "1a" hexNum, err := strconv.ParseInt(hexStr, 16, 64) if err != nil { fmt.Println("Hex conversion error:", err) return } fmt.Printf("Hex %s = %d\n", hexStr, hexNum) }
该示例显示了带错误处理和不同进制的字符串到整数的转换。strconv 包提供了强大的函数,用于对整数进行解析和格式化,并进行适当的错误处理。
来源
本教程通过实际示例介绍了 Go 中的 int
类型,涵盖了算术运算、类型转换和位操作。