12 - Implementando Regras de Negócio com Ponteiros

Agora que vocês já dominam o conceito de ponteiros, vamos colocá-lo em prática dentro da nossa API de alunos. Vamos criar uma função inteligente que recebe os dados de um estudante, calcula a sua média e define automaticamente se ele está aprovado, em recuperação ou reprovado.

Por que usar ponteiros aqui?

Em vez de criar uma função que calcula os valores e nos devolve um objeto totalmente novo, passaremos o endereço de memória do aluno (*Aluno). Dessa forma, a nossa função altera diretamente as propriedades Media e Situacao do aluno original que foi enviado, poupando memória e deixando o código muito mais elegante.

As Regras da nossa Escola

A nossa lógica vai seguir os critérios padrões de avaliação:

  • Média maior ou igual a 7.0: O aluno está Aprovado(a).
  • Média entre 5.0 e 6.9: O aluno fica Em Recuperação.
  • Média abaixo de 5.0: O aluno está Reprovado(a).

Criando a função mediaSituacao

Adicione a nova função no seu arquivo main.go, logo abaixo da sua Struct e do seu Slice global:

// Função responsável por calcular a média e definir a situação do estudante
// Note o uso do ponteiro (*Aluno) para modificar o objeto original diretamente
func mediaSituacao(aluno *Aluno) {
	// 1. Calcula a média aritmética simples
	aluno.Media = (aluno.Nota1 + aluno.Nota2) / 2

	// 2. Aplica as regras de negócio para definir a situação
	if aluno.Media >= 7 {
		aluno.Situacao = "Aprovado(a)"
	} else if aluno.Media >= 5 {
		aluno.Situacao = "Em Recuperação"
	} else {
		aluno.Situacao = "Reprovado(a)"
	}
}