Go Operators
Operators are symbols that allow us to perform various mathematical and logical operations on values and variables.
In Go, operators can be classified as below:
- Arithmetic
- Comparison
- Logical
- Bitwise
- Assignment
Arithmetic Operators
The arithmetic operators can be used in the basic arithmetic operations on literal values or variables.
| Operator | Description | Syntax |
|---|---|---|
| + | Addition. Adds two values | x + y |
| - | Subtraction. Subtracts the second operand from the first | x – y |
| * | Multiply | x * y |
| / | Divide | x / y |
| % | Modulus. Gives the reminder after division | x % y |
| ++ | Increment operator. Increments the value by 1 | x ++ |
| -- | Decrement operator. Decreases the value by 1 | x -- |
The following example demonstrates arithmetic operations such as addition, subtraction, and modulus.
package main
import "fmt"
func main() {
x := 5
y := 4
// Add x and y variables
resultAdd := x + y
fmt.Println(resultAdd) //output: 9
//Subtract y from x
resultSub := x - y
fmt.Println(resultSub) // output: 1
//Modulus of x and y
resultMod := x % y
fmt.Println(resultMod) // output: 1
}Comparison Operators
Comparison operators are used to compare two literal values or variables.
| Operator | Description | Syntax |
|---|---|---|
| == | Equal | x == y |
| != | Not Equal | x != y |
| < | Less than | x < y |
| <= | Less than or equal | x <= y |
| > | Greater than | x > y |
| >= | Greater than or equal | x >= y |
The following example demonstrates comparisons operators.
package main
import "fmt"
func main() {
x := 5
y := 4
fmt.Println (x == y) // output: false
fmt.Println(x != y) // output: true
fmt.Println (x < y) // output: false
fmt.Println (x <= y) // output: false
fmt.Println (x > y) // output: true
fmt.Println (x >= y) // output: true
}Logical Operators:
The logical operators are used to perform logical operations by combining two or more conditions. They return either true or false depending upon the conditions.
| Operator | Description | Syntax |
|---|---|---|
| && | Logical AND. Returns true if both expressions are true | expression1 && expression2 |
| || | Logical OR. Returns true if any one of the expressions is true. | exp1 || exp2 |
| ! | Logical NOT. Returns true if an expression is false. Returns false if the expression is true. | ! exp |
The following example demonstrates the logical operators.
package main
import "fmt"
func main() {
x ,y, z := 5, 10, 20
fmt.Println (x < y && x > z) //output: false
fmt.Println(x < y || x < z) //output: true
}Bitwise Operators
The bitwise operators work on bits and perform bit-by-bit operation.
| Operator | Description |
|---|---|
| & | bitwise AND |
| | | bitwise OR |
| ^ | bitwise XOR |
| << | left shift |
| >> | Right shift |
The following example demonstrates the bitwise operations.
package main
import "fmt"
func main() {
var x, y = 3, 5
var z int
//Bitwise AND
z = x & y
fmt.Println("Bitwise AND ", z) // output: 1
//Bitwise OR
z = x | y
fmt.Println("Bitwise OR ", z) //output: 7
//Bitwise XOR
z = x ^ y
fmt.Println("Bitwise XOR ", z) //output: 6
}In the above example, two int variables are x = 3 and y = 5. Binary of 3 is 0011 and 5 is 0101. so, x & y is 0001, which is numeric 1.x | y is 0111 which is numeric 7, and x ^ y is 0110 which is numeric 6.
Assignment Operators
The assignment operators are used to assign literal values or assign values by performing some arithmetic operation using arithmetic operators.
| Operator | Description | Syntax |
|---|---|---|
| = | Assign value | x = y |
| += | Add and assign | x += y same as x = x + y |
| -= | Subtract and assign | x -= y same as x = x - y |
| *= | Multiply and assign | x *= y same as x = x * y |
| /= | Divide and assign | x /= y same as x = x/y |
| %= | Divide and assign modulus | x %= y same as x = x%y |
The following example demonstrates the assignment operators.
package main
import "fmt"
func main() {
x, y := 10, 20
//Assign
x = y
fmt.Println(" = ", x) //output: 20
// Add and assign
x = 15
x += y
fmt.Println("+= ", x) //output: 35
// Subtract and assign
x = 25
x -= y
fmt.Println("-=", x) //output: 5
//Multiply and assign
x = 2
x *= y
fmt.Println("*=", x) //output: 40
//Divide and assign
x = 100
x /= y
fmt.Println("/=", x) // output: 5
//Divide and assign modulus
x = 30
x %= y
fmt.Println(" %= ", x) //output: 10
}