玩转Go语言之无聊的运算符

本文详细介绍了Go语言中的各类运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符及赋值运算符等,并通过具体示例说明了它们的使用方法和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

talk is cheap show me the code!

算术运算符

 1.C语言中算数运算符有

+ - * / %  ++ --复制代码

2.Go语言中的算数运算符和C语言一样

+ - * / %  ++ --复制代码

并且用法都一样

res1 := 1 + 1fmt.Println(res1) // 2res2 := 1 - 1fmt.Println(res2) // 0res3 := 2 * 2fmt.Println(res3) // 4res4 := 10 / 3fmt.Println(res4) // 3res5 := 10 % 3fmt.Println(res5) // 1复制代码

 注意点:

  1. 不同类型的常量(字面量)可以进行运算
  2. 不同类型的变量不可以直接进行运算

//res6 := 10 / 3.0
var num1 int  = 10
var num2 float64 = 3.0
//var res6 float64 = num1 / num2 // 报错
var res6 float64 = float64(num1) / num2
fmt.Println(res6)复制代码

3.+ 还可以用于拼接字符串

var str1 string = "lnj"
var str2 string = "it666"
var res7 string = str1 + str2
fmt.Println(res7)
复制代码

4.只有相同类型才能进行运算

var res8 string = "lnj" + 7 // 报错
fmt.Println(res8)复制代码

5.Go语言中的++ -- 只能写在后面, 不能写在前面

num := 1
fmt.Println(num) // 1
num++ // num = num + 1
fmt.Println(num) // 2
num-- // num = num - 1
fmt.Println(num) // 
//++num // 报错
//--num // 报错
复制代码

关系运算符

1.C语言中的关系运算符有

> < >= <= == !=复制代码

2.Go语言和C语言一样

> < >= <= == !=复制代码

注意点:

  1. 在C语言中非零即真, 但是在Go语言中没有非零即真的概念
  2. Go语言中所有的关系运算符返回的都是true或者false

res1 := 10 > 5
fmt.Println(res1) // true
res2 := 10 < 5
fmt.Println(res2) // false
res3 := 10 >= 5
fmt.Println(res3) // true
res4 := 10 <= 5
fmt.Println(res4) // false
res5 := 10 == 10
fmt.Println(res5) // true
res6 := 10 != 10
fmt.Println(res6) // false
复制代码

逻辑运算符

 1.C语言中的逻辑运算符有

&& || !复制代码

2.Go语言和C语言一样

&& || !复制代码

注意点:

  1. Go语言中的逻辑运算符返回的是true和false
  2. 参与运算的表达式的返回值都必须是布尔类型才行
  3. 表达式1 && 表达式2
  4. 表达式1 || 表达式2
  5. !表达式

规则:

  1. && 一假则假
  2. || 一真则真
  3. ! 真变假假变真

 res1 := (10 > 5) && (1 > 1)//res1 := 1 && 1 // 报错, 没有非零即真的概念, &&两遍必须都是布尔类型 fmt.Println(res1) // falseres2 := (10 > 5) || (1 > 1)//res2 := 1 || 1 // 报错, 没有非零即真的概念, ||两遍必须都是布尔类型fmt.Println(res2) // true//res3 := !false//res3 := !0 // 报错, 没有非零即真的概念, !右必须是布尔类型res3 := !(10 > 5)fmt.Println(res3)复制代码

位运算符

 1.C语言中的位运算符有

& | ^ << >>复制代码

2.Go语言的位运算符号C语言一样

& | ^ << >>复制代码

3.多了一个 &^

4.位运算是专门用于计算二进制位的

& 一假则假
| 一真则真
^ 不同为真, 相同为假
<< 乘以2的左移多少次幂
>> 除以2的右移多次次幂
复制代码

按位与0110      a&1011      b
-----0010a1 := 6b1 := 11res := a1 & b1fmt.Println(res) // 2复制代码

按位或
0110    a
1011    b
1111
a1 := 6
b1 := 11
res := a1 | b1fmt.Println(res) // 15
复制代码

按位异或
0110   a
1011   b
1101
a1 := 6b1 := 11res := a1 ^ b1fmt.Println(res) // 13
复制代码

左移:
乘以2的左移多少次幂num := 33 * 2(2) --> 3 * 4num = num << 2fmt.Println(num)右移:
除以2的右移多次次幂num := 1212 / 2(2) --> 12/4num = num >> 2fmt.Println(num)复制代码
&^ 逻辑清零运算符如果b的二进制的当前位是1, 那么就清零如果b的二进制的当前位不是1, 那么就保留a对应二进制位的数据
 
   0110   a
&^1011    b
-----------
  0100
a1 := 6b1 := 11res := a1 &^ b1fmt.Println(res) // 4
复制代码

赋值运算符

  1. C语言中的赋值运算符有
  2. = += *= /= %= &= |= ^= <<= >>=
  3. Go语言中的赋值运算符和C语言一样
  4. = += *= /= %= &= |= ^= <<= >>=
  5. 只不过新增了一个 &^=

var num intnum = 10num += 5 // 相当于 num = num + 5num -= 5 // 相当于 num = num - 5num *= 5 // 相当于 num = num * 5 num /= 5 // 相当于 num = num / 5num %= 5 // 相当于 num = num % 5num &= 5 // 相当于 num = num & 5num |= 5 // 相当于 num = num | 5num <<= 5 // 相当于 num = num << 5num >>= 5 // 相当于 num = num >> 5num &^= 5 // 相当于 num = num &^ 5 fmt.Println(num)复制代码

其他运算符

 1.C语言中的其它运算符

& 取地址运算符

* 访问地址运算符

2.Go语言和C语言一样

& 取地址运算符

* 访问地址运算符

var num intnum = 10// 定义一个指向int类型变量的指针var p *int// 取出num变量的内存地址, 放到指针变量p中 p = &num// 访问指针指向的内存fmt.Println(*p)复制代码


转载于:https://juejin.im/post/5ba31295e51d450e827b3083

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值