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 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
-
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.
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.
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
- 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.