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, com exceções, para criar expressões dos tipos aritméticas, lógicas, relacionais, bit-a-bit e outras.

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
package main

import (
	"fmt"
)

func main() {

	var b uint8 = 10
	var resultado uint8
	resultado = 12
	fmt.Println(resultado - b)
	fmt.Println(resultado * b)
	fmt.Println(resultado / b)
	fmt.Println(resultado % b)
}
Saída
2
120
1
2

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
Sintaxe
variavel ou valor operador variavel2 ou valor2
Exemplo 3
package main

import (
	"fmt"
)

func main() {

	var a uint8 = 2
	var b uint8 = 4

	fmt.Println(b - a)
	fmt.Println(a * b)
	fmt.Println(b / a)
	fmt.Println(b % a)
}
Saída
2
8
2
0

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
Sintaxe
variavel operador
Exemplo 3
package main

func main() {

	var valor int16 = 1
	valor++ //2
	valor-- //1
}
Saída
-

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

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
package main

import "fmt"

func main() {

	var a, b int = 2, 1

	fmt.Println(a == b) //false
	fmt.Println(a != b) // true
	fmt.Println(a > b)  //true
	fmt.Println(a >= b) //true
	fmt.Println(a <= b) //false
	fmt.Println(a < b)  //false
}
Saída
false
true
true
true
false
false

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
|| OR lógico a || b
Sintaxe
valor1 ou expressao operador valor2 ou expressao

!valor ou expressao
Exemplo 5
package main

import "fmt"

func main() {

	var teste a,b = false,true

	fmt.Println(a && b) //false
	fmt.Println(a || b) // true
	fmt.Println(!b)  //true
	fmt.Println(!(a || b)) //true
}
Saída
false
true
false
false

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.

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
| OU bit-a-bit a | b
^ NÃO/Complemento bit-a-bit ^a
>> Desloca N bits à direita a>>b
<< Desloca N bits à esquerda a<<b
&^ E NEGADO / AND NOT a &^ b
Sintaxe
valor1 ou expressao1 operador valor2 ou expressao2

~valor ou expressao
Exemplo 6
package main

import "fmt"

func main() {

	var a, b = 0x0f, 0xf0

	fmt.Println(a | b) 
	fmt.Println(a & b)
	fmt.Println(a ^ b)
    fmt.Println(^a)
    fmt.Println(a&^b)
}
Saída
255
0
15
-16
15

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

Tab. 7: Outros operadores
Operador Descrição Exemplo
& Endereço de /Referencia &variavel
* Ponteiro para *a
. Operado de acesso variavel.nome_membro
[] Indexador variavel[valor_indice]
<- Entrada/Saída - apenas channel a <- nome_canal
Exemplo 7
package main

import "fmt"

type mstruct struct {
	codigo int
}

func main() {
	array := []int{0, 1, 2}
	fmt.Println(array[2])

	num := 1
	pnt := &num

	fmt.Println(*pnt)

	ms := mstruct{codigo: 1}

	fmt.Println(ms.codigo)
}
Saída
2
1
1

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. 30/10/2025 - revisão 5 - Adição: operador (^&) e Ex.7; Correção: linguagem em Ex. 5 e 6, saída Ex. 6
  2. 08/09/2025 - revisão 4 - Ajustes: pontuais, sintaxes, target de linkgs, objetivos, correção de exemplos/saídas, e css de tabs.
  3. 16/09/2024 - revisão 3 - Correção em links Portugol/C; adição outros operadores (.) e []; ajustes gramaticais
  4. 30/08/2024 - revisão 2 - Correção em links de objetivos
  5. 02/10/2023 - revisão 1 - Correção em referências, sintaxes e erros gramaticais
  6. 21/08/2023 - versão inicial