Go语言基础编程:golang中的运算符

时间:2019-10-29 作者:golang

Go语言基础编程:golang中的运算符

GO语言的运算符

运算符是任何编程语言的基础。因此,在不使用运算符的情况下,Go语言的功能是不完整的。运算符允许我们对操作数执行不同类型的运算。GO语言自学网根据操作员的不同功能对其进行分类:

算术运算符

关系运算符

逻辑运算符

按位运算符

赋值运算符

杂项运算符

 

算术运算符

这些用于对Go语言中的操作数执行算术/数学运算:
加法: “ +”运算符将两个操作数相加。例如,x + y。
减法: “-”运算符减去两个操作数。例如,xy。
乘法: “ *”运算符将两个操作数相乘。例如,x * y。
除法: ‘/’运算符将第一个操作数除以第二个。例如,x / y。
模量:当第一个操作数除以第二个操作数时,’%’运算符返回余数。例如,x%y。
注意: -,+,!,&,*,<-和^也称为一元运算符,一元运算符的优先级更高。++和—运算符来自于语句,它们不是表达式,因此不在运算符层次结构中。

例:

// Go program to illustrate the
// use of arithmatic operators
package main

import "fmt"

func main() {
p:= 34
q:= 20

// Addition
result1:= p + q
fmt.Printf("Result of p + q = %d", result1)

// Subtraction
result2:= p - q
fmt.Printf("\nResult of p - q = %d", result2)

// Multiplication
result3:= p * q
fmt.Printf("\nResult of p * q = %d", result3)

// Division
result4:= p / q
fmt.Printf("\nResult of p / q = %d", result4)

// Modulus
result5:= p % q
fmt.Printf("\nResult of p %% q = %d", result5)
}

 

输出:

Result of p + q = 54
Result of p - q = 14
Result of p * q = 680
Result of p / q = 1
Result of p % q = 14

 

关系运算符

关系运算符用于比较两个值。让我们一一看一下:

‘==’(等于)运算符检查两个给定的操作数是否相等。如果是这样,则返回true。否则返回false。例如,5 == 5将返回true。
‘!=’(不等于)运算符检查两个给定的操作数是否相等。如果不是,则返回true。否则返回false。它是’==’运算符的精确布尔补码。例如,5!= 5将返回false。
‘>’(大于)运算符检查第一个操作数是否大于第二个操作数。如果是这样,则返回true。否则返回false。例如,6> 5将返回true。
“ <”(小于)运算符检查第一个操作数是否小于第二个操作数。如果是这样,则返回true。否则返回false。例如,6 <5将返回false。
‘> =’(大于等于)运算符检查第一个操作数是否大于或等于第二个操作数。如果是这样,则返回true。否则返回false。例如,5> = 5将返回true。
“ <=”(小于等于)运算符检查第一个操作数是否小于或等于第二个操作数。如果是这样,则返回true。否则返回false。例如,5 <= 5也将返回true。

例:

// Go program to illustrate the
// use of relational operators
package main

import "fmt"

func main() {
p:= 34
q:= 20

// ‘=='(Equal To)
result1:= p == q
fmt.Println(result1)

// ‘!='(Not Equal To)
result2:= p != q
fmt.Println(result2)

// ‘<‘(Less Than)
result3:= p < q
fmt.Println(result3)

// ‘>'(Greater Than)
result4:= p > q
fmt.Println(result4)

// ‘>='(Greater Than Equal To)
result5:= p >= q
fmt.Println(result5)

// ‘<='(Less Than Equal To)
result6:= p <= q
fmt.Println(result6)

}

 

输出:

false
true
false
true
true
false

 

逻辑运算符

它们用于组合两个或多个条件/约束或补充所考虑的原始条件的评估。

逻辑AND:当同时考虑到两个条件时,“ &&”运算符返回true。否则返回false。例如,当a和b都为真(即非零)时,&& b返回真。
逻辑或: “ ||” 当满足所考虑的条件中的一个(或两个)时,运算符将返回true。否则返回false。例如,|| 如果a或b之一为true(即非零),则b返回true。当然,当a和b均为true时,它将返回true。
逻辑非: “!” 运算符返回true,即不满足考虑条件。否则返回false。例如,如果a为假,即a = 0时,!a返回true。

例:

// Go program to illustrate the
// use of logical operators
package main
import "fmt"
func main() {
var p int = 23
var q int = 60

if(p!=q && p<=q){
fmt.Println("True")
}

if(p!=q || p<=q){
fmt.Println("True")
}

if(!(p==q)){
fmt.Println("True")
}

}

 

输出:

True
True
True

 

按位运算符

在Go语言中,有6个按位运算符可按位工作或用于逐位操作。以下是按位运算符:

&(按位与):将两个数字作为操作数,并对两个数字的每一位进行“与”运算。仅当两个位均为1时,AND的结果才为1。
| (按位或):将两个数字作为操作数,并对两个数字的每一位进行“或”运算。OR的结果为1,两个位中的任何一个为1。
^(按位XOR):将两个数字作为操作数,并对两个数字的每一位进行XOR。如果两个位不同,则XOR的结果为1。
<<(左移):取两个数字,左移第一个操作数的位,第二个操作数确定要移位的位数。
>>(右移):取两个数字,右移第一个操作数的位,第二个操作数确定要移位的位数。
&^(AND NOT):这是一个明确的运算符。

例:

// Go program to illustrate the
// use of bitwise operators
package main

import "fmt"

func main() {
p:= 34
q:= 20

// & (bitwise AND)
result1:= p & q
fmt.Printf("Result of p & q = %d", result1)

// | (bitwise OR)
result2:= p | q
fmt.Printf("\nResult of p | q = %d", result2)

// ^ (bitwise XOR)
result3:= p ^ q
fmt.Printf("\nResult of p ^ q = %d", result3)

// << (left shift)
result4:= p << 1
fmt.Printf("\nResult of p << 1 = %d", result4)

// >> (right shift)
result5:= p >> 1
fmt.Printf("\nResult of p >> 1 = %d", result5)

// &^ (AND NOT)
result6:= p &^ q
fmt.Printf("\nResult of p &^ q = %d", result6)

}

 

输出:

Result of p & q = 0
Result of p | q = 54
Result of p ^ q = 54
Result of p <> 1 = 17
Result of p &^ q = 34

 

赋值运算符

赋值运算符用于为变量赋值。赋值运算符的左侧操作数是一个变量,而赋值运算符的右侧操作数是一个值。右侧的值必须与左侧的变量具有相同的数据类型,否则编译器将引发错误。不同类型的赋值运算符如下所示:

“ =”(简单分配):这是最简单的赋值运算符。该运算符用于将右侧的值分配给左侧的变量。
“ + =”(添加分配):此运算符是’+’和’=’运算符的组合。该运算符首先将左侧变量的当前值添加到右侧的值,然后将结果分配给左侧的变量。
“-=”(减法赋值):此运算符是’-‘和’=’运算符的组合。该运算符首先从右侧的值中减去左侧变量的当前值,然后将结果分配给左侧的变量。
“ * =”(乘法分配):此运算符是’*’和’=’运算符的组合。该运算符首先将左侧变量的当前值乘以右侧值,然后将结果分配给左侧变量。
“ / =”(分区分配):此运算符是’/’和’=’运算符的组合。该运算符首先将左侧变量的当前值除以右侧值,然后将结果分配给左侧变量。
“%=”(模量分配):该运算符是’%’和’=’运算符的组合。该运算符首先对左侧变量的当前值乘以右侧值的模,然后将结果分配给左侧变量。
“&=”(按位与分配):此运算符是’&’和’=’运算符的组合。该运算符首先将左边变量的当前值与右边的值“按位与”,然后将结果分配给左边的变量。
“ ^ =”(按位异或):此运算符是’^’和’=’运算符的组合。该运算符首先将左侧变量的当前值与右侧变量进行“按位异或”,然后将结果分配给左侧变量。
“ | =”(按位或):此运算符是“ |”的组合 和’=’运算符。该运算符首先将变量的当前值与左侧的值“按位或”,然后将结果分配给左侧的变量。

例:

// Go program to illustrate the
// use of assignment operators
package main

import "fmt"

func main() {
var p int = 45
var q int = 50

// “=”(Simple Assignment)
p = q
fmt.Println(p)

// “+=”(Add Assignment)
p += q
fmt.Println(p)

//“-=”(Subtract Assignment)
p-=q
fmt.Println(p)

// “*=”(Multiply Assignment)
p*= q
fmt.Println(p)

// “/=”(Division Assignment)
p /= q
fmt.Println(p)

// “%=”(Modulus Assignment)
p %= q
fmt.Println(p)

}

 

输出:

50
100
50
2500
50
0

 

杂项运算符

&:此运算符返回变量的地址。
*:此运算符提供指向变量的指针。
<-:该运算符的名称为接收。它用于从通道接收值。

例:

// Go program to illustrate the
// use of Misc Operators
package main

import "fmt"

func main() {
a := 4

// Using address of operator(&) and
// pointer indirection(*) operator
b := &a
fmt.Println(*b)
*b = 7
fmt.Println(a)
}

 

输出:

4
7

 

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:2100506673@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。