Операторы являются основой каждого языка программирования. Таким образом, функциональность языка Golang неполная без использования операторов. Операторы позволяют нам выполнять различные типы операций над операндами. В языке Go операторы можно классифицировать на основе их различных функций .

Арифметические операторы
Эти операторы используются для выполнения операций над операндами в языке Go:
- Сложение: «+» складывает два операнда. Например: х+у.
- Вычитание: «-» вычитает два операнда. Пример: ху.
- Умножение: «*» умножает два операнда. Например: х*у.
- Деление: «/» делит первый операнд на второй операнд. Например: х/у.
- Остаток: оператор «%» возвращает остаток при делении первого операнда на второй операнд. Например: х%у.
Примечание: -, +, !, &, *, <- и ^ также называются унарными операторами, и приоритет унарных операторов выше. Операторы ++ и — являются операторами, они не являются выражениями, поэтому они находятся вне иерархии операторов.
Например:
//Minh họa chương trình Go dùng toán tử số học
package main
import "fmt"
func main() {
p:= 34
q:= 20
// Phép cộng
result1:= p + q
fmt.Printf("Result of p + q = %d", result1)
// Phép trừ
result2:= p - q
fmt.Printf("\nResult of p - q = %d", result2)
// Phép nhân
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)
}
Результат:
Kết quả của p + q = 54
Kết quả của p - q = 14
Kết quả của p * q = 680
Kết quả của p / q = 1
Kết quả của p % q = 14
Реляционные операторы
Операторы отношения используются для сравнения двух значений. Давайте рассмотрим каждого оператора по отдельности:
- Оператор '=='(Равно) проверяет, равны ли два указанных операнда. Если равно, возвращает true. В противном случае возвращается false. Например, 5==5 вернет значение true.
- Оператор '!='(Не равно) проверяет, равны ли два указанных операнда. В противном случае возвращается значение true. В противном случае возвращается false. Это точное логическое дополнение оператора «==». Например, 5!=5 вернет false.
- Оператор '>'(Больше чем) проверяет, больше ли первый операнд второго операнда. Если больше, возвращается значение true. Если меньше, возвращается false. Например, 6>5 вернет значение true.
- Оператор «<» (меньше) проверяет, меньше ли первый операнд второго операнда. Если меньше, возвращается значение true. Если нет, возвращается false. Например, <5 вернет
- Оператор '>='(Больше, чем равно) проверяет, больше ли первый операнд второго операнда или равен ему. Если больше или равно, возвращается значение true. Если меньше или равно, возвращается false. Например: 5>=5 вернет true.
- Оператор «<=» (меньше или равно) проверяет, меньше ли первый операнд второго операнда или равен ему. Если значение больше или равно, возвращается значение true. Если меньше или равно, возвращается false. Например: <=5 также вернет
Например:
// Minh họa chương trình Go dùng toán tử quan hệ
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
Логические операторы
Они используются для объединения двух или более условий/ограничений или для дополнения оценки рассматриваемого начального условия.
- И: Оператор «&&» возвращает значение true, если оба рассматриваемых условия выполнены. В противном случае возвращается false. Например, a && b возвращает значение true, когда и a, и b являются истинными (т.е. не равны нулю).
- ИЛИ: Оператор '||' Возвращает значение true, если выполняется одно (или оба) рассматриваемых условия. В противном случае возвращается false. Например: а || b возвращает true, если a или b являются истинными (т.е. не равны нулю). Конечно, он возвращает значение true, когда и a, и b истинны.
- Логическое НЕ: «!» Оператор Возвращает значение true, если рассматриваемое условие не выполняется. В противном случае возвращается false. Например: !a возвращает true, если a ложно, то есть когда a = 0.
Например:
// Minh họa chương trình Go dùng toán tử logic
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" ||=""><=q){ fmt.println("true")="" }="" if(!(p="=q)){" fmt.println("true")="" }="" }="">
Результат:
True
True
True
Побитовые операторы
В языке Go существует 6 побитовых операторов, которые работают на уровне битов или используются для выполнения побитовых операций. Ниже приведены побитовые операторы:
- & (побитовое И): принимает два числа в качестве операндов и выполняет операцию И над каждым битом двух чисел. Результатом AND будет только 1, если оба бита равны 1.
- | (побитовое ИЛИ): принимает два числа в качестве операндов и выполняет операцию ИЛИ над каждым битом двух чисел. Результат ИЛИ равен 1, если любой из двух бит равен 1.
- ^ (побитовое исключающее ИЛИ): принимает два числа в качестве операндов и выполняет операцию исключающего ИЛИ над каждым битом двух чисел. Результатом XOR является 1, если два бита различны.
- < (сдвиг влево): берет два числа, сдвигает биты первого операнда влево, второй операнд определяет количество позиций для сдвига
- >> (сдвиг вправо): Берем два числа, сдвигаем биты первого операнда вправо, второй операнд определяет количество позиций для сдвига.
- &^ (И НЕ): Это явный побитовый оператор.
Например:
// Minh họa chương trình Go dùng toán tử bitwise
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)
}
Результат:
Kết quả của p & q = 0
Kết quả của p | q = 54
Kết quả của p ^ q = 54
Kết quả của p < 1="68" kết="" quả="" của="" p="">> 1 = 17
Kết quả của p &^ q = 34
Оператор присваивания
Оператор присваивания используется для присвоения значения переменной. Левый операнд оператора присваивания — это переменная, а правый операнд оператора присваивания — это значение. Значение справа должно иметь тот же тип данных, что и переменная слева, в противном случае компилятор вернет ошибку. Ниже показаны различные типы операторов присваивания:
- “="(Простое присваивание): Это простейший оператор присваивания. Этот оператор используется для присвоения значения справа переменной слева.
- «+=»(Дополнительное назначение): Этот оператор представляет собой комбинацию операторов «+» и «=». Этот оператор сначала добавляет текущее значение левой переменной к значению правой, а затем присваивает результат левой переменной.
- «-=» (минус-присваивание): этот оператор представляет собой комбинацию операторов «-» и «=». Этот оператор сначала вычитает текущее значение левой переменной из значения правой, а затем присваивает результат левой переменной.
- «*=» (присваивание умножения): этот оператор представляет собой комбинацию операторов «*» и «=». Этот оператор сначала умножает текущее значение левой переменной на значение правой, а затем присваивает результат левой переменной.
- «/=» (присваивание деления): этот оператор представляет собой комбинацию операторов «/» и «=». Этот оператор сначала делит текущее значение левой переменной на значение правой, а затем присваивает результат левой переменной.
- «%="(Остаток присваивания): Этот оператор представляет собой комбинацию операторов «%» и «=». Этот оператор сначала берет остаток текущего значения левой переменной, учитывая значение справа, а затем присваивает результат левой переменной.
- «&=» (побитовое И): этот оператор представляет собой комбинацию операторов «&» и «=». Этот оператор сначала выполняет побитовую операцию «И» между текущим значением левой переменной и значением правой, а затем присваивает результат левой переменной.
- «^=» (побитовое исключающее ИЛИ): этот оператор представляет собой комбинацию операторов «^» и «=». Этот оператор сначала выполняет операцию «побитового исключающего ИЛИ» над текущим значением левой переменной и значением правой, а затем присваивает результат левой переменной.
- «|=»(побитовое включающее ИЛИ): этот оператор представляет собой комбинацию оператора «|» операторы и «=». Этот оператор сначала выполняет операцию «побитового включающего ИЛИ» над текущим значением левой переменной и значением правой, а затем присваивает результат левой переменной.
- «<=: Этот оператор представляет собой комбинацию операторов < ' и '="'». Этот оператор сначала «сдвигает» текущее значение переменной слева на значение справа, а затем присваивает результат переменной справа.
- «>>=»: этот оператор представляет собой комбинацию операторов «>>» и «=». Этот оператор сначала выполняет операцию «сдвиг вправо» над текущим значением левой переменной и значением справа, а затем присваивает результат левой переменной.
Например:
// Minh họa chương trình Go dùng toán tử gán
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
Другие операторы
- &: Этот оператор возвращает адрес переменной.
- *: Этот оператор предоставляет указатель на переменную.
- <-: Имя этого оператора — receive. Используется для получения значения из
// Minh họa chương trình sử dụng toán tử khác
package main
import "fmt"
func main() {
a := 4
// Dùng địa chỉ của toán tử (&) toán tử trỏ gián tiếp (*)
b := &a
fmt.Println(*b)
*b = 7
fmt.Println(a)
}
Результат:
4
7