Golang的数值运算主要通过内置的算术运算符实现,支持整型和浮点型数据的各类基础计算操作,不同的运算符对应不同的计算逻辑,同时运算优先级决定了复杂表达式中各个部分的计算顺序。

Golang常用算术运算符
Golang的算术运算符覆盖了基础数学运算的各类场景,具体可以分为以下几类:
基础四则运算符
基础四则运算符包括加法+、减法-、乘法*、除法/,支持整型和浮点型数据的运算,需要注意除法运算符在整型运算时的特性。
+:实现两个数值的相加,也可用于字符串拼接,但字符串拼接不属于数值运算范畴-:实现两个数值的相减,也可作为一元运算符表示负数*:实现两个数值的相乘/:实现两个数值的相除,若两个操作数都是整型,结果会截断小数部分只保留整数
取模运算符
取模运算符%用于计算两个整数相除后的余数,仅支持整型操作数,浮点型数据不能使用该运算符。
自增与自减运算符
Golang支持自增++和自减--运算符,用于将变量的值加1或减1,这两个运算符只能作为独立语句使用,不能参与表达式计算。
运算符优先级说明
当表达式中包含多个不同的算术运算符时,Golang会按照预设的优先级顺序依次计算,优先级从高到低的顺序如下:
| 优先级 | 运算符 | 说明 |
|---|---|---|
| 1 | ++ -- | 自增、自减运算符,优先级最高 |
| 2 | * / % | 乘法、除法、取模运算符 |
| 3 | + - | 加法、减法运算符 |
如果表达式中多个运算符优先级相同,会按照从左到右的顺序依次计算,也可以通过小括号()改变运算的优先级,小括号内的表达式会优先计算。
代码示例演示
以下通过具体的代码示例展示不同算术运算符的使用方式和优先级效果:
package main
import "fmt"
func main() {
// 基础四则运算示例
var a int = 10
var b int = 3
fmt.Println("加法结果:", a + b) // 输出13
fmt.Println("减法结果:", a - b) // 输出7
fmt.Println("乘法结果:", a * b) // 输出30
fmt.Println("整数除法结果:", a / b) // 输出3,截断小数
fmt.Println("取模结果:", a % b) // 输出1
// 浮点型运算示例
var c float64 = 10.5
var d float64 = 3.2
fmt.Println("浮点除法结果:", c / d) // 输出3.28125
// 自增自减示例
e := 5
e++ // 自增,e变为6
fmt.Println("自增后e的值:", e)
e-- // 自减,e变回5
fmt.Println("自减后e的值:", e)
// 优先级示例
result1 := 10 + 2 * 3 // 先算乘法2*3=6,再算加法10+6=16
fmt.Println("默认优先级结果:", result1)
result2 := (10 + 2) * 3 // 先算小括号内10+2=12,再算乘法12*3=36
fmt.Println("小括号改变优先级结果:", result2)
}
数值运算注意事项
在进行Golang数值运算时,需要注意以下几点:
- 整型除法会直接截断小数部分,若需要保留小数,需要先将操作数转换为浮点型再计算
- 取模运算符
%仅支持整型操作数,浮点型使用取模会编译报错 - 自增
++和自减--只能作为独立语句使用,不能写成fmt.Println(a++)这类形式,否则会编译错误 - 不同数值类型之间不能直接运算,需要先做类型转换,比如
int和int64相加需要先统一类型
数值运算是Golang编程的基础操作,清晰掌握各类算术运算符的用法和优先级规则,能够有效减少代码中的逻辑错误,提升编码效率。