Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Comando if
  2. Comando if-else
  3. Comando if-else-if
  4. Função como argumento
  5. Múltiplas condições
  6. Retorno de operador
  7. Comandos aninhados

Em relação a comandos de decisão, a linguagem Go possui os seguintes comandos: if, if-else, if-else-if. Nesta parte do tutorial vamos estudar esses comandos.

Os comandos de decisão bem como os seus funcionamentos já foram discutidos em Portugol: Comandos de Decisão sendo a leitura recomendada.

Quando precisamos fazer uma validação ou teste para executar apenas um trecho de código em nossos programas em Go, utilizamos o comando if:

Fig. 1: Fluxograma comandos if
Sintaxe
if condicao {
 //condicao == true
}
Onde
condicao: condição ou expressão, simples ou composta, testada.

O uso de () é opcional caso o comando if contenha apenas uma expressão para validação. Por boa prática, é aconselhado o uso para facilitar a leitura ou evitar erros de precedência de operadores.

Exemplo 1
package main
import "fmt"

func main() {
	valor := false
	valor2 := 100

	if valor == false {
		fmt.Printf("valor == false\n")
	}
}
Saída
valor == false
valor2 == 100

A condição pode ser composta de um ou mais variáveis , expressões ou funções. Os operadores relacionais e lógicos são utilizados em conjunto na tomada de decisões, por exemplo.

Exemplo 2
package main
import "fmt"

func main() {
	valor := false
	valor2 := 100

	if valor == false || valor2 == 100 {
		fmt.Printf("valor2 == 100")
	}
}
Saída
valor2 == 100

No exemplo anterior, ao validar uma condição executamos um trecho de código quando uma condição é verdadeira. Caso seja necessário executar um trecho de código quanto uma condição seja falsa, utilizamos o comando if-else.

Fig. 2: Fluixograma comando if-else
Sintaxe
if condicao
{
  //condicao == true
}
else
{
  //condicao == false
}
Exemplo 3
package main
import "fmt"

func main() {
	valor := false
	valor2 := 100

	if valor == true {
	   fmt.Printf("true")
	}
	else{
	   fmt.Printf("false")	
	}
}
Saída
false

Quando é necessário realizar validações em cascata, podemos utilizar o comando if-else-if fornecido pela linguagem Go.

Fig. 3: Fluxograma comando if-elseif
Sintaxe
if condicao1
{
  //se condicao1 == true
}
else if condicao2
{
  //se condicao2 == true
}
else if condicao3
{
  //se condicao == true
}
else
{
 //condicao1, condicao2, condicao3 == false
}
Exemplo 4
package main
import "fmt"

func main() {
	var a int = 1

	if a == 1 {
		fmt.Printf("== 1")

	} else if a < 1 {
		fmt.Printf("< 1")

	} else {
		fmt.Printf("> 1")
	}
}
Saída
== 1

O comando if em Go, assim como em outras linguagens, permite que uma função seja utilizado como argumento para verificação, ou comparação, como mostrado no exemplo abaixo:

Exemplo 5
package main

import "fmt"

func funcao(p int) int {
	if p == 0 {
		return 0
	}

	if p == 1 {
		return 1
	}

	if p == 2 {
		return 2
	}

	return -1
}

func main() {
	i := 1
	if funcao(i) == 1 {
		fmt.Println("funcao como argumento")
	}

}
Saída
funcao como argumento

Em Go, como também em outras linguagens, o comando if aceita o uso de operadores para a declaração de múltiplas condições como mostrado no exemplo abaixo:

Exemplo 6
package main

import "fmt"

func main() {
	codigo := 1
	valor := 1.99
	flag := 'A'

	if valor == 1.99 && codigo == 1 || (flag >= 'A' && flag <= 'C') {
		fmt.Println("condição aceita!")
	}
}
Saída
condição aceita!

Em determinadas situações, precisamos realizar atribuições simples com o comando if-else em que os valores true ou false são usados como atribuição.

Como os operadores relacionais e lógicos retornam true ou false como resultado, podemos declarar uma atribuição diretamente sem o uso do comando if-else como visto na sintaxe a seguir:

Sintaxe
nome_variavel = variavel1|expressao1 operador variavel2|expressao2

No exemplo abaixo, é mostrada a atribuição básica de valores true ou false em que utilizamos o comando if-else:

Exemplo 7: atribuição com if-else
package main

import "fmt"

func main() {
	a := 1
	b := 2

	flag := false

	if a > b {
		flag = true
	} else {
		flag = false
	}

	fmt.Println(flag)
}
Saída
false

O exemplo acima pode ser resumido em apenas uma atribuição direta à uma variável utilizando a sintaxe vista anteriormente:

Exemplo 8: atribuição sem if-else
package main

import "fmt"

func main() {
	a := 1
	b := 2

	flag := a > b

	fmt.Println(flag)
}
Saída
false

Todos os operadores relacionais podem ser utilizados nesse tipo de situação vista acima não ficando limitado ao operador relacional (>) utilizado nos exemplos.

Para expressões mais complexas envolvendo outros operadores, é necessário utilizar (&&) ou (||) para separar corretamente as expressões contendo os operadores relacionais.

  1. 05/05/2026 - revisão 5 - Adição: 'Retorno de operador'
  2. 30/10/2025 - revisão 4 - Adição: 'função como argumento' e 'múltiplas condições'
  3. 08/09/2025 - revisão 3 - Ajustes: pontuais, objetivos e sintaxes
  4. 16/09/2024 - revisão 2 - Correção em links Portugol; ajustes gramaticais
  5. 02/10/2023 - revisão 1 - Correção em referências, erros gramaticais e adição de fluxogramas
  6. 21/08/2023 - versão inicial