欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 【go入门】运算符

【go入门】运算符

2025/11/30 12:58:15 来源:https://blog.csdn.net/m0_74012934/article/details/142662702  浏览:    关键词:【go入门】运算符

目录

  • 前言
  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 取地址和指针运算符
  • 运算符优先级

前言

go语言和其他语言的运算符一样,大体上分为这么几种,算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、取地址和指针运算符。最后也会说一下它们的优先级。

算术运算符

运算符描述
+相加
-相减
*相乘
/相除
%取余
++自增
自减
//demo1
package mainimport "fmt"func main() {a, b := 20, 10var c intc = a + bfmt.Printf("a + b = %d\n", c)c = a - bfmt.Printf("a - b = %d\n", c)c = a * bfmt.Printf("a * b = %d\n", c)c = a / bfmt.Printf("a / b = %d\n", c)c = a % bfmt.Printf("取余 = %d\n", c)a++fmt.Printf("自增 = %d\n", a)a--fmt.Printf("自减 = %d\n", a)
}

输出结果是:

a + b = 30
a - b = 10
a * b = 200
a / b = 2
取余 = 0
自增 = 21
自减 = 20

关系运算符

运算符描述
==相等返回true不相等返回false
!=不相等返回true否则返回false
>左边值大于右边值返回true否则返回false
<左边值小于右边值返回true否则返回false
>=左边值大于等于右边值返回true否则返回false
<左边值小于等于右边值返回true否则返回false

逻辑运算符

运算符描述
&&逻辑与(AND),两边都为真为true否则false
||逻辑或(OR),两边都为假为true否则false
!逻辑非(NOT),若A为真,则非A为假
//demo2
package mainimport "fmt"func main() {a := trueb := falsefmt.Println(a && b)fmt.Println(a || b)fmt.Println(!a)
}

输出结果是:

false
true
false

位运算符

位运算符是对内存中的二进制进行运算

运算符描述
&按位与,对两边的操作数按位与,相同为1不同为0
|按位或,对两边的操作数按位或,都为0才为0,只要有一个1则为1
^按位异或,对两边的操作数按位异或,相同为0不同为1
<<左移,左移n位就是乘以2的n次方
>>右移,右移n位就是除以2的n次方

可以看一下上一篇讲常量文章末尾的思考题。

赋值运算符

= 将表达式的值赋给左值(将右边的值赋给左边)
+= 将左右相加赋给左边
-=  *= /= %= <<= >>= &= ^= |=

取地址和指针运算符

go语言和C语言一样也有指针和地址的概念

运算符描述
&返回变量存储地址,&a
*指针变量,地址当中的内容,*a
//demo3
package mainimport "fmt"func main() {var a int = 1var p *intp = &a //p中存的是a的地址fmt.Println(p) //输出的是a的地址fmt.Println(*p) //*p是通过a的地址找到a的内容
}

输出结果是:

0xc00000a0e8
1

当然你的地址和我的地址可能不一样,这个是随机的,就和你去酒店开房,给你分配的房间号是随机的,只要空着,都可能会分配给你。内存相当于酒店,地址相当于房间号。

运算符优先级

运算符分优先级也就是说有些运算符先算有些后算,当同一优先级的运算符一起出现,从左往右算。

第一优先级 * / % << >> & &^
第二优先级 + - | ^
第三优先级 == != > < >= <=
第四优先级 &&
第五优先级 ||

可以通过小括号提升某个表达式的整体优先级

package mainimport "fmt"func main() {a, b, c, d := 20, 10, 15, 5var e inte = (a + b) * c / dfmt.Println(e)e = a + (b*c)/dfmt.Println(e)e = (a + b) * (c / d)fmt.Println(e)e = ((a + b) * c) / dfmt.Println(e)
}

输出结果是:

90
50
90
90

版权声明:

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

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

热搜词