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.