1
resposta

Conditional if else in Golang

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.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá, Rick, como vai?

Muito interessante ver sua transição de Java para Go e o quanto você está aplicando o que já aprendeu para fortalecer a base na nova linguagem. Sua explicação sobre o uso de operadores bitwise foi clara e muito válida, especialmente para quem está começando e quer entender o que acontece por trás do código.

O código em Go está bem escrito e segue boas práticas. O uso do if value := 7; isEven(value) mostra bem como o Go permite declarar variáveis diretamente dentro da estrutura condicional. A função isEven está concisa e correta, utilizando o operador & para checar a paridade do número.

Continue participando do fórum e dividindo seus aprendizados, o espaço está sempre à disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!