Refazendo esses exercícios, só que agora com uma linguagem nova. Decidi mudar por influência de um amigo e de uma mentoria que tive, e acabei migrando de Java para Go. Confesso que estou aprendendo rapidamente essa linguagem. Ela possui uma sintaxe bem simples, o que ajuda bastante, e o tempo que passei com Java desde a base me ajudou muito nessa curva rápida de aprendizado. Como os cursos de Go da Alura que estou fazendo até agora não têm exercícios práticos — ou momentos de “mão na massa” — resolvi voltar aqui e refazer os exercícios de Java, mas agora usando a linguagem Go.
Fiz ele tanto em Go, quanto em Java que e a linguagem nativa do exercicio e ficou assim:
Java
FIz de duas formas, uma com operador ternario e outra com if else normal:
package test;
import com.github.rickmvi.jtoolbox.console.IO;
import com.github.rickmvi.jtoolbox.control.If;
import com.github.rickmvi.jtoolbox.util.Numbers;
public class Main {
public static void main(String[] args) {
int number = 8;
IO.printf("The number is %s", (number & 1) == 0 ? "even" : "odd");
If.when(Numbers.isEven(number))
.apply(() -> IO.format("The number {} is even", number))
.orElse(() -> IO.format("The number {} is odd", number));
}
}
Go
package main
import "fmt"
func main() {
if value := 7; isEven(value) {
fmt.Printf("Type %T - Value %d is even.", value, value)
} else {
fmt.Printf("Type %T - Value %d is odd.", value, value)
}
}
func isEven(value int) bool {
return (value & 1) == 0
}
Fazendo mais para praticar e passar o tempo.
Uma breve explicação para caso algum iniciante veja este tópico e se depare com (value & 1) == 0
. Isso seria a mesma coisa que o tradicional mod (%
), algo como value % 2 == 0
. No caso do mod, usamos o resto da divisão de um número para sabermos se ele é par ou ímpar, pois, ao dividir, caso o resto seja igual a 0, quer dizer que ele é par, pois não tem resto. Já os ímpares restam 1 — uma explicação meia boca. Já o que usei com (value & 1) == 0
é o uso de operadores bitwise. O que ele faz é simplesmente olhar o último bit do valor passado e ver se aquele bit é igual a zero; caso seja, o número é par. Se for diferente de zero, no caso 1, ele seria ímpar. Em tese, isso é mais performático que o operador mod (%
), já que ele só precisa verificar o último bit do valor, em vez de fazer um cálculo do valor e pegar seu resto. Contudo, em computadores mais modernos, isso não muda muita coisa, mas eu, por gostar de ser diferente, faço dessa forma usando operadores bitwise.