Objetivos
Expressões e operadores
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
Operadores bit-a-bit/bitwise
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.
Precedência de operadores
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 |
Histórico de atualizações
- 30/10/2025 - revisão 5 - Adição: operador (^&) e Ex.7; Correção: linguagem em Ex. 5 e 6, saída Ex. 6
- 08/09/2025 - revisão 4 - Ajustes: pontuais, sintaxes, target de linkgs, objetivos, correção de exemplos/saídas, e css de tabs.
- 16/09/2024 - revisão 3 - Correção em links Portugol/C; adição outros operadores (.) e []; ajustes gramaticais
- 30/08/2024 - revisão 2 - Correção em links de objetivos
- 02/10/2023 - revisão 1 - Correção em referências, sintaxes e erros gramaticais
- 21/08/2023 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.