欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > Go语言运算符详解

Go语言运算符详解

2025/5/17 4:48:17 来源:https://blog.csdn.net/qq_58662768/article/details/147877918  浏览:    关键词:Go语言运算符详解

文章目录

  • 1. 算术运算符
  • 2. 关系运算符
  • 3. 逻辑运算符
  • 4. 位运算符
  • 5. 赋值运算符
  • 6. 其他运算符
  • 运算符优先级
  • 注意事项

Go语言提供了与其他语言类似的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。这些运算符即可满足基本的运算需求。

1. 算术运算符

运算符描述示例
+加法a + b
-减法a - b
*乘法a * b
/除法a / b
%取模(求余)a % b
++自增 a++(Go中只有后置)
自减a-- (Go中只有后置)
a := 10
b := 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
a++                 // a = 11
b--                 // b = 2

2. 关系运算符

运算符描述示例
==等于a == b
!=不等于a != b
>大于a > b
<小于a < b
>=大于等于a >= b
<=小于等于a <= b
x := 5
y := 7
fmt.Println(x == y)  // false
fmt.Println(x != y)  // true
fmt.Println(x > y)   // false
fmt.Println(x < y)   // true
fmt.Println(x >= 5)  // true

3. 逻辑运算符

运算符描述示例
&&逻辑与a && b
||逻辑或a || b
!逻辑非!a
a := true
b := false
fmt.Println(a && b)  // false
fmt.Println(a || b)  // true
fmt.Println(!a)      // false

4. 位运算符

运算符描述示例
&按位ANDa & b
|按位ORa | b
^按位XORa ^ b
&^位清除(AND NOT)a &^ b
<<左移a << b
>>右移a >> b
x := 10  // 1010
y := 3   // 0011
fmt.Println(x & y)   // 2 (0010)
fmt.Println(x | y)   // 11 (1011)
fmt.Println(x ^ y)   // 9 (1001)
fmt.Println(x &^ y)  // 8 (1000)
fmt.Println(x << 1)  // 20 (10100)
fmt.Println(x >> 1)  // 5 (0101)

5. 赋值运算符

运算符描述示例
=简单赋值a = b
+=加后赋值a += b (等价于a = a + b)
-=减后赋值a -= b
*=乘后赋值a *= b
/=除后赋值a /= b
%=取模后赋值a %= b
&=按位AND后赋值a &= b
|=按位OR后赋值a |= b
^=按位XOR后赋值a ^= b
<<=左移后赋值a <<= b
>>=右移后赋值a >>= b
a := 10
a += 5  // a = 15
a -= 3  // a = 12
a *= 2  // a = 24
a /= 4  // a = 6
a %= 4  // a = 2

6. 其他运算符

运算符描述示例
&取地址&a
*指针解引用*p
<-通道操作ch <- x (发送), x = <-ch (接收)
x := 10
ptr := &x       // 获取x的地址
fmt.Println(*ptr) // 10 (解引用)ch := make(chan int, 1)
ch <- 5         // 发送到通道
val := <-ch     // 从通道接收

运算符优先级

Go语言运算符优先级从高到低如下:
在实际应用中,建议使用括号来保证运算符的执行顺序,避免出现预期外的结果,即使你的优先级背的滚瓜烂熟,还是会受到编译器版本影响。

1、() [] -> . ++ – (后缀)

2、! ^ + - * & <- ++ – (前缀)

3、* / % << >> & &^

4、+ - | ^

5、== != < <= > >=

6、&&

7、||

8、= += -= *= /= %= <<= >>= &= ^= |=

注意事项

1、Go语言没有前置的++和–运算符,只有后置形式。

2、Go语言没有三元运算符(?😃,必须使用if-else代替。

3、不同类型的值不能直接运算,必须显式转换。

4、整数除法会截断小数部分。

// 错误示例
a := 5
// b := ++a  // 错误:Go没有前置++// 正确做法
a++
b := a// 类型转换示例
var x int32 = 10
var y int64 = 20
// sum := x + y  // 错误:类型不匹配
sum := int64(x) + y  // 正确

掌握这些运算符是编写Go程序的基础,合理使用可以提高代码的简洁性和效率。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词