1 Visão geral dos operadores em Golang
Na linguagem Go, os operadores são utilizados para realizar operações de código do programa, incluindo operações aritméticas, comparações relacionais, operações lógicas e muito mais. Diferentes operadores correspondem a diferentes funcionalidades e cenários de uso. Compreender e dominar esses operadores é a base para uma programação eficaz.
2 Operadores Aritméticos
A linguagem Go fornece um conjunto de operadores aritméticos:
- Adição (+): Operação de adição
- Subtração (-): Operação de subtração
- Multiplicação (*): Operação de multiplicação
- Divisão (/): Operação de divisão
- Resto (%): Operação de módulo
Exemplos:
package main
import "fmt"
func main() {
// Operação de adição
soma := 10 + 5
fmt.Println("10 + 5 =", soma) // Retorna 15
// Operação de subtração
dif := 10 - 5
fmt.Println("10 - 5 =", dif) // Retorna 5
// Operação de multiplicação
prod := 10 * 5
fmt.Println("10 * 5 =", prod) // Retorna 50
// Operação de divisão
quoc := 10 / 5
fmt.Println("10 / 5 =", quoc) // Retorna 2
// Operação de módulo (resto)
rest := 10 % 5
fmt.Println("10 % 5 =", rest) // Retorna 0
}
3 Operadores Lógicos
Os operadores lógicos na linguagem Go são usados para conectar múltiplas condições (geralmente usadas para valores booleanos). Eles incluem três tipos: E (&&), OU (||) e NÃO (!).
3.1 E (&&)
Quando todas as condições são verdadeiras, o resultado da operação "E" é verdadeiro.
Exemplos:
package main
import "fmt"
func main() {
fmt.Println(true && true) // Retorna verdadeiro
fmt.Println(true && false) // Retorna falso
fmt.Println(false && false) // Retorna falso
// O resultado é verdadeiro apenas quando ambas as condições são verdadeiras
}
3.2 OU (||)
Se pelo menos uma condição for verdadeira, o resultado da operação "OU" é verdadeiro.
Exemplos:
package main
import "fmt"
func main() {
fmt.Println(true || true) // Retorna verdadeiro
fmt.Println(true || false) // Retorna verdadeiro
fmt.Println(false || false) // Retorna falso
// O resultado é verdadeiro se pelo menos uma condição for verdadeira
}
3.3 NÃO (!)
Usado para inverter o valor booleano de uma condição.
Exemplos:
package main
import "fmt"
func main() {
fmt.Println(!true) // Retorna falso
fmt.Println(!false) // Retorna verdadeiro
// Inverte o valor booleano
}
4 Operadores de Comparação
Os operadores de comparação na linguagem Go são utilizados para comparar duas variáveis ou valores:
- Igual a (==)
- Diferente de (!=)
- Maior que (>)
- Menor que (<)
- Maior ou igual a (>=)
- Menor ou igual a (<=)
O resultado das operações de comparação é um valor booleano: true
ou false
.
5 Operadores Bit a Bit
Em Go, os operadores bit a bit permitem manipular diretamente os bits binários dos dados:
- E bit a bit (&)
- OU bit a bit (|)
- XOR bit a bit (^)
- Deslocamento de bits para a esquerda (<<)
- Deslocamento de bits para a direita (>>)
Os operadores bit a bit são principalmente utilizados em programação de baixo nível, como operações de hardware diretas, criptografia e outros cenários.
6 Operadores de Atribuição
Os operadores de atribuição são utilizados para atribuir valores às variáveis. Na linguagem Go, existem várias formas de operadores de atribuição:
- Atribuição simples (=)
- Atribuição de adição (+=)
- Atribuição de subtração (-=)
- Atribuição de multiplicação (*=)
- Atribuição de divisão (/=)
- Atribuição de módulo (%=)
Esses operadores tornam o código mais conciso. Por exemplo, x += 1
é equivalente a x = x + 1
.
7 Operadores Especiais
7.1 Operadores de Incremento (++) e Decremento (--)
O operador de incremento (++) e o operador de decremento (--) são utilizados para adicionar 1 e subtrair 1 do valor de uma variável, respectivamente. Eles são os únicos operadores na linguagem Go que podem atuar diretamente na própria variável (não em uma expressão).
package main
import "fmt"
func main() {
x := 1
x++
fmt.Println("x++ =", x) // Mostra 2
y := 10
y--
fmt.Println("y-- =", y) // Mostra 9
}
Observe que na linguagem Go, x++
ou x--
não pode fazer parte de uma expressão. Por exemplo, z := x++
não é permitido.
7.2 Conversão de Tipos
A linguagem Go é tipada estaticamente, o que significa que uma vez que uma variável é declarada, seu tipo não pode ser alterado. Portanto, às vezes é necessário converter uma variável de um tipo para outro. Go não possui conversão de tipo automática; é necessária uma conversão de tipo explícita.
Exemplo:
package main
import (
"fmt"
)
func main() {
var i int = 42
fmt.Println(float64(i)) // Converte int para float64
var f float64 = 3.14
fmt.Println(int(f)) // Converte float64 para int, parte decimal será descartada
}
Ao realizar conversão de tipo, é importante garantir que os dados estejam seguros durante o processo de conversão, como a possível perda de precisão ao converter um número de ponto flutuante para um número inteiro.