Go Boolean Data Types
A boolean data type represents logical entities. It can have two possible values: true or false. 
We use the bool keyword to create boolean-type variables. For example,
package main
import "fmt"
func main() {
  var boolTrue bool = true
  var boolFalse bool = false
  fmt.Println("The boolean values are", boolTrue, "and", boolFalse)
}
Output:
The boolean values are true and false
Relational Operators in Golang
We use the relational operators to compare two values or variables. For example,
number1 := 9
number2 := 3
result := number1 > number2
Here, > is a relational (comparison) operator. It compares whether number1 is greater than number2.
Relational Operators use boolean values (true and false) to return the validity of a relation. It returns:
- trueif the comparison between operators is correct.
- falseif the comparison between operators is incorrect.
Different Types of Relational Operators in Golang
Here's a list of various relational operators available in Go:
| Operator | Example | Descriptions | 
|---|---|---|
| ==(equal to) | a == b | returns trueifaandbare equal | 
| !=(not equal to) | a != b | returns trueifaandbare not equal | 
| >(greater than) | a > b | returns trueifais greater thanb | 
| <(less than) | a < b | returns trueifais less thanb | 
| >=(greater than or equal to) | a >= b | returns trueifais either greater than or equal tob | 
| <=(less than or equal to) | a <= b | returns trueisais either less than or equal tob | 
Example: Relational Operator in Go
// Program to illustrate the working of Relational Operators
package main
import "fmt"
func main() {
  number1 := 12
  number2 := 20
  var result bool
  // equal to operator
  result = (number1 == number2)
  fmt.Printf("%d == %d returns %t \n", number1, number2, result)
  // not equal to operator
  result = (number1 != number2)
  fmt.Printf("%d != %d returns %t \n", number1, number2, result)
  // greater than operator
  result = (number1 > number2)
  fmt.Printf("%d > %d returns %t \n", number1, number2, result)
  // less than operator
  result = (number1 < number2)
  fmt.Printf("%d < %d returns %t \n", number1, number2, result)
}
Output
12 == 20 returns false 12 != 20 returns true 12 > 20 returns false 12 < 20 returns true
Logical Operators in Go
Logical operators return either true or false depending upon the conditions.
| Operator | Description | Example | 
|---|---|---|
| &&(Logical AND) | exp1 && exp2 | returns trueif both expressionsexp1andexp2aretrue | 
| ||(Logical OR) | exp1 || exp2 | returns trueif any one of the expressions istrue. | 
| !(Logical NOT) | !exp | returns trueifexpisfalseand returnsfalseifexpistrue. | 
Example: Logical Operator in Go
// Program to illustrate the working of Logical Operator
package main
import "fmt"
func main() {
  number1 := 6
  number2 := 12
  number3 := 6
  var result bool
  // returns false because number1 > number2 is false
  result = (number1 > number2) && (number1 == number3)
  fmt.Printf("Result of AND operator is %t \n", result)
  // returns true because number1 == number3 is true
  result = (number1 > number2) || (number1 == number3)
  fmt.Printf("Result of OR operator is %t \n", result)
  
  // returns false because number1 == number3 is true
  result = !(number1 == number3);
  fmt.Printf("Result of NOT operator is %t \n", result)
}
Output
Result of AND operator is false Result of OR operator is true Result of NOT operator is false
Go Boolean Expression
In programming, expressions that return boolean values: true or false are known as boolean expressions. For example,
number1 := 5
number2 := 8
result := number1 > number2
Here, number1 > number2 is a boolean expression that returns false.
Why boolean expression?
Boolean expressions are used to create decision-making programs. Suppose we want to create a program that determines whether a person can vote or not.
We can use a boolean expression to check if the age of that person is greater than 18. If true, the person can vote. If false, cannot vote.
We will learn more about these decision-making programs in Go if...else.