4、Golang中的运算符

4、Golang中的运算符

1、Golang 内置的运算符

  • 算数运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符

2、算数运算符

运算符描述
+相加
-相减
*相乘
/相除
%求余数

注意: ++(自增)和–(自减)在 Go 语言中是单独的语句,并不是运算符。

package main

import (
	"fmt"
	// "strings"
	// "strconv"
)

func main() {
	fmt.Println("10+3=", 10+3)
	fmt.Println("10-3=", 10-3)
	fmt.Println("10*3=", 10*3)
	//除法注意:如果运算的数都是整数,那么除后,去掉小数部分,保留整数部分
	fmt.Println("10/3=", 10/3)
	fmt.Println("10.0/3=", 10.0/3)
	// 取余注意 余数=被除数-(被除数/除数)*除数
	fmt.Println("10%3=", 10%3)
	fmt.Println("-10%3=", -10%3)
	fmt.Println("10%-3=", 10%-3)
	fmt.Println("-10%-3=", -10%-3)
}

输出

PS E:\go_study> go run .\main.go
10+3= 13
10-3= 7
10*3= 30
10/3= 3
10.0/3= 3.3333333333333335
10%3= 1
-10%3= -1
10%-3= 1
-10%-3= -1
PS E:\go_study> 

**注意:**在 golang 中,++ 和 – 只能独立使用;在 golang 中没有前++

package main

import (
	"fmt"
	// "strings"
	// "strconv"
)

func main() {
	var i int = 1
	i++
	fmt.Println("i=", i)

	i--
	fmt.Println("i=", i)
}

输出

PS E:\go_study> go run .\main.go
i= 2
i= 1
PS E:\go_study> 

以下类似写法错误

package main

import (
	"fmt"
	// "strings"
	// "strconv"
)

func main() {
	var i int = 8 
	var a int 
	a = i++ //错误,i++只能独立使用 
	a = i-- //错误, i--只能独立使用
	
	var k int = 1 
	++k // 错误,在 golang 没有 前++ 
	--k // 错误,在 golang 没有 前-- 
	fmt.Println("k=", k)
}

输出

PS E:\go_study> go run .\main.go
# command-line-arguments
.\main.go:12:7: syntax error: unexpected ++ at end of statement
.\main.go:13:7: syntax error: unexpected -- at end of statement
.\main.go:16:2: syntax error: unexpected ++, expecting }
PS E:\go_study> 

3、关系运算符

运算符描述
==检查两个值是否相等,如果相等返回 True 否则返回 False。
!=检查两个值是否不相等,如果不相等返回 True 否则返回 False。
>检查左边值是否大于右边值,如果是返回 True 否则返回 False。
>=检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。
<检查左边值是否小于右边值,如果是返回 True 否则返回 False。
<=检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。
package main

import (
	"fmt"
	// "strings"
	// "strconv"
)

func main() {
	var n1 int = 11
	var n2 int = 8
	fmt.Println(n1 == n2)
	fmt.Println(n1 != n2)
	fmt.Println(n1 > n2)
	fmt.Println(n1 >= n2)
	fmt.Println(n1 < n2)
	fmt.Println(n1 <= n2)
	flag := n1 > n2
	fmt.Println("flag=", flag)
}

输出

PS E:\go_study> go run .\main.go
false
true
true
true
false
false
flag= true
PS E:\go_study> 

4、逻辑运算符

运算符描述
&&逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。
||逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。
逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True。
package main

import (
	"fmt"
	// "strings"
	// "strconv"
)

func main() {
	// 逻辑运算符的使用 &&
	var age int = 40
	if age > 30 && age < 50 {
		fmt.Println("ok1")
	}
	if age > 30 && age < 40 {
		fmt.Println("ok2")
	}
	// 逻辑运算符的使用 ||
	if age > 30 || age < 50 {
		fmt.Println("ok3")
	}
	if age > 30 || age < 40 {
		fmt.Println("ok4")
	}
	// 逻辑运算符的使用 !
	if age > 30 {
		fmt.Println("ok5")
	}
	if !(age > 30) {
		fmt.Println("ok6")
	}
}

输出

PS E:\go_study> go run .\main.go
ok1
ok3
ok4
ok5
PS E:\go_study> 

5、赋值运算符

运算符描述
=简单的赋值运算符,将一个表达式的值赋给一个左值
+=相加后再赋值
-=相减后再赋值
*=相乘后再赋值
/=相除后再赋值
%=求余后再赋值
package main

import (
	"fmt"
	// "strings"
	// "strconv"
)

func main() {
	d := 8 + 2*8
	fmt.Println("d 的值:", d)
	x := 10
	x += 5
	fmt.Println("x += 5 的值:", x)

	m := 10
	m -= 5
	fmt.Println("m -= 5 的值:", m)

	l := 10
	l *= 5
	fmt.Println("l *= 5 的值:", l)

	k := 10.0
	k /= 5
	fmt.Println("k /= 5 的值:", k)

	n := 10
	n %= 3
	fmt.Println("n %= 3 的值:", n)
}

输出

PS E:\go_study> go run .\main.go
d 的值: 24
x += 5 的值: 15
m -= 5 的值: 5
l *= 5 的值: 50
k /= 5 的值: 2
n %= 3 的值: 1
PS E:\go_study> 

6、位运算符

运算符描述
&参与运算的两数各对应的二进位相与。 (两位均为 1 才为 1)
|参与运算的两数各对应的二进位相或。 (两位有一个为 1 就为 1)
^参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为 1。 (两位不一样则为 1)
<<左移 n 位就是乘以 2 的 n 次方。 “a<<b”是把 a 的各二进位全部左移 b 位,高位丢弃,低位补 0。
>>右移 n 位就是除以 2 的 n 次方。 “a>>b”是把 a 的各二进位全部右移 b 位。
package main

import (
	"fmt"
	// "strings"
	// "strconv"
)

func main() {
	var a int = 5 // 101 
	var b int = 2 // 010 
	fmt.Println("a&b=", a&b) // 000 
	fmt.Println("a|b=", a|b) // 111 
	fmt.Println("a^b=", a^b) // 111 
	fmt.Println("5>>2=", a>>b) // 5 右移 2 位 00001 
	fmt.Println("5<<2=", a<<b) // 5 左移 2 位 10100 
	fmt.Println("5<<1=", 5<<1) // 1010 
	fmt.Println("5>>1=", 5>>1) // 10 
	fmt.Println("7>>2=", 7>>2) // 1
}

输出

PS E:\go_study> go run .\main.go
a&b= 0
a|b= 7
a^b= 7
5>>2= 1
5<<2= 20
5<<1= 10
5>>1= 2
7>>2= 1
PS E:\go_study> 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值