1 Обзор операторов в Golang
В языке Go операторы используются для выполнения операций с программным кодом, включая арифметические операции, сравнения, логические операции и многое другое. Различные операторы соответствуют различным функциональным возможностям и сценариям использования. Понимание и усвоение этих операторов является основой эффективного программирования.
2 Арифметические операторы
В языке Go предусмотрен набор арифметических операторов:
- Сложение (+): Операция сложения
- Вычитание (-): Операция вычитания
- Умножение (*): Операция умножения
- Деление (/): Операция деления
- Остаток от деления (%): Операция взятия остатка от деления
Примеры:
package main
import "fmt"
func main() {
// Операция сложения
sum := 10 + 5
fmt.Println("10 + 5 =", sum) // Выводит 15
// Операция вычитания
diff := 10 - 5
fmt.Println("10 - 5 =", diff) // Выводит 5
// Операция умножения
prod := 10 * 5
fmt.Println("10 * 5 =", prod) // Выводит 50
// Операция деления
quot := 10 / 5
fmt.Println("10 / 5 =", quot) // Выводит 2
// Операция взятия остатка от деления
rem := 10 % 5
fmt.Println("10 % 5 =", rem) // Выводит 0
}
3 Логические операторы
Логические операторы в языке Go используются для объединения нескольких условий (обычно используются для булевых значений). В них есть три типа: AND (&&), OR (||) и NOT (!).
3.1 AND (&&)
Когда все условия истинны, результат операции "AND" также является истиной.
Примеры:
package main
import "fmt"
func main() {
fmt.Println(true && true) // Выводит true
fmt.Println(true && false) // Выводит false
fmt.Println(false && false) // Выводит false
// Результат истинен только, когда оба условия верны
}
3.2 OR (||)
Если хотя бы одно условие верно, результат операции "OR" также является истиной.
Примеры:
package main
import "fmt"
func main() {
fmt.Println(true || true) // Выводит true
fmt.Println(true || false) // Выводит true
fmt.Println(false || false) // Выводит false
// Результат истинен, если хотя бы одно условие верно
}
3.3 NOT (!)
Используется для инвертирования булевого значения условия.
Примеры:
package main
import "fmt"
func main() {
fmt.Println(!true) // Выводит false
fmt.Println(!false) // Выводит true
// Инвертирует булево значение
}
4 Операторы сравнения
Операторы сравнения в языке Go используются для сравнения двух переменных или значений:
- Равно (==)
- Не равно (!=)
- Больше чем (>)
- Меньше чем (<)
- Больше или равно (>=)
- Меньше или равно (<=)
Результатом операций сравнения является булево значение: true
или false
.
5 Побитовые операторы
В Go побитовые операторы позволяют нам непосредственно манипулировать двоичными разрядами данных:
- Побитовое И (&)
- Побитовое ИЛИ (|)
- Побитовое исключающее ИЛИ (^)
- Побитовый сдвиг влево (<<)
- Побитовый сдвиг вправо (>>)
Побитовые операторы в основном используются в низкоуровневом программировании, таком как прямые операции с аппаратурой, шифрование и другие сценарии.
6 Операторы присваивания
Операторы присваивания используются для присвоения значений переменным. В языке Go существует несколько форм операторов присваивания:
- Простое присваивание (=)
- Присваивание с прибавлением (+=)
- Присваивание с вычитанием (-=)
- Присваивание с умножением (*=)
- Присваивание с делением (/=)
- Присваивание с остатком (%=)
Эти операторы делают код более лаконичным. Например, x += 1
эквивалентно x = x + 1
.
7 Специальные операторы
7.1 Операторы Инкремента (++) и Декремента (--)
Оператор инкремента (++) и оператор декремента (--) используются для увеличения и уменьшения значения переменной на 1 соответственно. Они являются единственными операторами в языке Go, которые могут действовать непосредственно на саму переменную (а не на выражение).
package main
import "fmt"
func main() {
x := 1
x++
fmt.Println("x++ =", x) // Выводит 2
y := 10
y--
fmt.Println("y-- =", y) // Выводит 9
}
Обратите внимание, что в языке Go x++
или x--
не могут быть частью выражения. Например, z := x++
не разрешено.
7.2 Преобразование Типов
Язык Go является статически типизированным, что означает, что после объявления переменной ее тип не может быть изменен. Поэтому иногда необходимо преобразовать переменную одного типа в другой тип. В Go нет автоматического преобразования типов; требуется явное преобразование типов.
Пример:
package main
import (
"fmt"
)
func main() {
var i int = 42
fmt.Println(float64(i)) // Преобразование int в float64
var f float64 = 3.14
fmt.Println(int(f)) // Преобразование float64 в int, дробная часть будет отброшена
}
При выполнении преобразования типов важно обеспечить безопасность данных в процессе преобразования, например, потенциальную потерю точности при преобразовании числа с плавающей точкой в целое число.