Para declararmos expressões em qualquer linguagem de programação precisamos utilizar os operadores. Os conceitos de expressões e operadores já foram vistos em Portugol: Expressões.

Exemplo 1
var teste int = (A*B + C^D)*(E/F) + G%10 

A linguagem Go utiliza os mesmos operadores da linguagem C para criarmos expressões dos tipos aritméticas, lógicas, relacionais, bit-a-bit e outras. Nesta seção vamos aprender os operadores fornecidos pela linguagem Go.

Para atribuirmos valores a variáveis e constantes, Go utiliza a tabela de operadores de atribuição abaixo:

Tab. 1 - Operadores de Atribuição
Operador Descrição Exemplo -
= Atribuição a=b -
+= Atribuição acumulativa de adição a+=b a = a + b
-= Atribuição acumulativa de subtração a-=b a = a - b
*= Atribuição acumulativa de multiplicação a*=b a = a * b
%= Atribuição acumulativa de Módulo a%=b a = a % b
/= Acumulação de divisão a/=b a = a + b
|= Acumulação de OU bit-a-bit a/=b a = a / b
&= Acumulação de E bit-a-bit a&=b a = a & b
^= Acumulação de Ou-Exclusivo bit-a-bit a^=b a = a ^ b
<<= Acumulação de deslocamento a<<=b a = a << b
>>= Acumulação de deslocamento a>>=b a = a >> b
Sintaxe
variavel = valor ou expressao
variavel operador= valor ou expressao
Exemplo 2
var teste a,b = 10,2
var resultado uint8
resultado = 12
resultado = resultado - b 
resultado = resultado * b
resultado = resultado / b 
resultado = resultado % b
Saída
-

Para criação de expressões aritméticas, utilizamos os operadores abaixo suportados pela linguagem Go:

A linguagem Go possui os seguintes operadores aritméticos binários:

Tab. 2 - Operadores Aritméticos
Operador Descrição Exemplo
+ Adição a+b
- Subtração a-b
* Multiplicação a*b
/ Divisão a/b
% Módulo a%b

A linguagem Go possui os seguintes operadores pos decremento/incremento:

Tab. 3 - Operadores Pré/Pos incremento
Operador Descrição Exemplo Abreviação de
++ Incremento a++ a = a + 1
-- Decremento a-- a = a - 1

Operadores ++ e -- como pré-incremento não são suportados pela linguagem Go.

Sintaxe
variaveloperador
Exemplo 3
var valor int16 = 1
valor++ //2
valor-- //1
Saída
-

A linguagem Go possui os seguintes operadores relacionais abaixo. Esses operadores retornam verdadeiro(true) ou falso(false).

Tab. 4 - Operadores Relacionais
Operador Descrição Exemplo
== Igual a == b
>= Maior ou igual a >= b
<= Menor ou igual a <= b
!= Diferente a != b
> Maior a>b
Sintaxe
valor1 ou expressao1 operador valor2 ou expressao2
Exemplo 4
var a,b int = 2,1
var resultado bool = false

resultado = a == b //false
resultado = a != b // true
resultado = a > b //true
resultado = a >= b //true
resultado = a <= b //false
resultado = a < b //false
Saída
-

Para entendermos sobre a aplicação dos operadores lógicos é importante entender sobre a tabela verdade que foi explicado em Tutorial Portugol: Operadores Lógicos e Tutorial C: Operadores Lógicos.

Os operadores lógicos retornam um valor booleano true ou false. Esse tipo de operador é muito utilizado para tomadas de decisão, por exemplo.

A linguagem Go possui os seguintes operadores lógicos:

Tab. 5 - Operadores Lógicos
Operador Significado Exemplo
&& E lógico a && b
! Não lógico !a
ou | OR lógico a || b
Sintaxe
valor1|expressao operador valor2|expressao
!valor|expressao
Exemplo 5
var teste a,b = false,true
var resultado bool = 0

resultado = a && b
resultado = a || b
resultado = !b
resultado = !(a || b)
Saída
-

O uso dos operadores bit-a-bit já foi estudado em Lógica de programação e Tutorial C . É importante entender sobre a tabela verdade que foi explicado em Tutorial Portugol: Operadores Lógicos e Tutorial C: Operadores Lógicos.

O funcionamento básico pode ser visto em Tutorial C: Operadores bit-a-bit sendo a leitura recomendada.

A linguagem Go possui os seguintes operadores bit-a-bit(bitwise):

Tab. 6 - Operadores bitwise
Operador Descrição Exemplo
& E bit-a-bit a & b
| OR bit-a-bit a | b
~ Não bit-a-bit ~a
>> Desloca N bits à direita a>>b
<< Desloca N bits à esquerda a<<b
Sintaxe
valor1 ou expressao1 operador valor2 ou expressao2
~valor ou expressao
Exemplo 6
var teste a,b = 2,1
var resultado uint8 = 0

resultado = a | b //3
resultado = a & b //0
resultado = a ^ b //2
Saída
-

Além dos operadores estudados acima, Go também possui os operadores abaixo que também estão presentes na linguagem C.

Tab. 7: Outros operadores
Operador Descrição Exemplo
& Endereço de /Referencia &variavel
* Ponteiro para *a
. Operado de acesso variavel.nome_membro
[] Indexador variavel[0]

Mais operadores serão adicionados em futuras atualizações.

O validação do uso dos operadores estudados acima seguem uma ordem ou precedência. A tabela abaixo resume essa precedência da mais alta até a mais baixa.

Tab. 8: Precedência de operadores
# Operador Descrição
1 :: Escopo
2 x++ x-- Incremento/Decremento
3 . Acesso a membros
- +x -x Unário
- ! ~ Não lógico / bit-a-bit
- *x Contéudo de
- &x Endereço de
4 .* ->* Acesso a ponteiro de membros
5 * / % Multiplicação, divisão e módulo
6 + - Soma e subtração
7 << >> Deslocamento
8 < <= => > Comparação
9 == != Comparação
10 & E lógico
11 ^ Ou-Exclusivo
12 | Ou bit-a-bit
13 && E lógico
14 || Ou lógico
15 x?y:z if ternário
- = Atribuição
- += -= Atribuição
- *= /= %= Atribuição
- <<= >>= Atribuição
- &= ^= |= Atribuição
- , Vírgula
  1. 16/09/2024 - revisão 3 - Correção em links Portugol/C; adição outros operadores (.) e []; ajustes gramaticais
  2. 30/08/2024 - revisão 2 - Correção em links de objetivos
  3. 02/10/2023 - revisão 1 - Correção em referências, sintaxes e erros gramaticais
  4. 21/08/2023 - versão inicial