Cargando...

Go Docs, validaciones e iteraciones en Go

Aprende a valerte de la documentación oficial de Go y consigue dominar las validaciones y estructuras repetitivas en Go.

Go doc es un apartado donde muestro enlaces a fuentes oficinales de Go para documentarse sobre el lenguaje. Go Docs.

Go Docs

Desde ahí es posible documentarse sobre cualquier paquete de Go. Por ejemplo, buscando sobre el paquete fmt.

Go Docs

Loops

Dicen las malas lenguas que Go solo tiene for para aplicar ciclos, no como en otros lenguajes que existe en while y el do while, foreach y otros.

El ciclo más sencillo sería el siguiente:

package main

func main() {
    for i := 0; i < 10; i++ {
        println(i)
    }
}
go run *.go

#Output
0
1
2
3
4
5
6
7
8
9

Este que se acaba de mostrar el es for de toda la vida.

For / While

package main

func main() {
    i := 0
    for i < 10 {
        println(i)
        i++
    }
}

For / Forever

package main

import "fmt"

func main() {
    counter := 0
    for {
        fmt.Println("Forever: ", counter)
        counter++
    }
}

For combinado

package main

import "fmt"

func main() {
    /*
        Imprime los números del 1 al 3
    */
    i := 1
    for i <= 3 {
        fmt.Println(i)
        i = i + 1
    }

    /*
        Imprime los números del 7 al 9
    */
    for j := 7; j <= 9; j++ {
        fmt.Println(j)
    }

    /*
        Realiza un ciclo infinito, sin embargo, lo detiene a la primera.
    */
    for {
        fmt.Println("loop")
        break
    }

    /*
        Imprime solo números impares, ya que omite los números pares por medio del módulo.
    */
    for n := 0; n <= 5; n++ {
        if n%2 == 0 {
            continue
        }
        fmt.Println(n)
    }
}
go run for_combinado.go

#Output
2
3
7
8
9
loop
1
3
5

Condicionales

Operadores lógicos y de comparación

Son operadores que nos permiten hacer una comparación de condiciones y en caso de cumplirse como sino ejecutarán un código determinado. Si se cumple es VERDADERO/TRUE y si no se cumple son FALSO/FALSE.

Empecemos con los operadores de comparación:

Operadores de comparación

Son aquellos que retornan TRUE o FALSE en caso de cumplirse o no una expresión. Son los siguientes:

  • valor1 == valor2: Retorna TRUE si valor1 y valor2 son exactamente iguales.
  • valor1 != valor2: Retorna TRUE si valor1 es diferente de valor2.
  • valor1 < valor2: Retorna TRUE si valor1 es menor que valor2
  • valor1 > valor2: Retorna TRUE si valor1 es mayor que valor2
  • valor1 >= valor2: Retorna TRUE si valor1 es igual o mayor que valor2
  • valor1 <= valor2: Retorna TRUE si valor1 es menor o igual que valor2.

Operadores lógicos

Son aquellos que retorna TRUE o FALSE si cumplen o no una condición.

Operador AND:

Este operador indica que todas las condiciones declaradas deben cumplirse para poderse marcar como TRUE. En Go, se utiliza este símbolo &&.

Ejemplo1: 1>0 && 2 >0 Esto retornará TRUE porque tanto la primera como la segunda condición son verdaderas.

Ejemplo2: 2<0 && 1 > 0 Esto retornará FALSE porque una de las condiciones no es verdadera.

Operador OR:

Este operador indica que al menos una de las condiciones debe cumplirse para marcarse como TRUE. En Go, se representa con el símbolo ||.

Ejemplo: 2<0 || 1 > 0 Esto retornará TRUE porque la segunda condición se cumple, a pesar que la primera no.

Operador NOT:

Este operador retornará el opuesto al boleano que está dentro de la variable. Ejemplo:

myBool :=  true
fmt.Println(!myBool) // Esto retornará false

Primeros pasos

package main

import "fmt"

func main() {

    if 7%2 == 0 {
        fmt.Println("7 es par")
    } else {
        fmt.Println("7 es impar")
    }

    if 8%4 == 0 {
        fmt.Println("8 es divisible de 4")
    }

    if num := 9; num < 0 {
        fmt.Println(num, "es negativa")
    } else if num < 10 {
        fmt.Println(num, "tiene 1 dígito")
    } else {
        fmt.Println(num, "tiene multiples dígitos")
    }
}
go run conditionals.go 

#Output
7 es impar
8 es divisible de 4
9 tiene 1 dígito

Condicionales usando funciones

package main

import "fmt"

func main() {
    if isPair(6) {
        fmt.Println("Número par")
    } else {
        fmt.Println("Número impar")
    }
    if isValidUser("Antonio5", "Password") {
        fmt.Println("Credentiales válidas")
    } else {
        fmt.Println("Credentiales inválidas")
    }
}

func isPair(num int) bool {
    return num%2 == 0
}

func isValidUser(userName, pass string) bool {
    return userName == "Antonio" && pass == "Password"
}
go run conditionals_with_functions.go 

#Output
Número par
Credentiales inválidas

Verificar si hay errores y registrar un log en el sistema.

package main

import (
    "fmt"
    "log"
    "strconv"
)

func main() {
    value, err := strconv.Atoi("100")

    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Value:", value)
        log.Fatal(value)
    }
}
go run conditional_error.go

#Output
Value: 100
2022/03/04 22:53:04 100
exit status 1

En caso de que la conversión de la cadena resultase en un error, este devolvería "Error + contenido del error". De otro modo, retorna el valor correspondiente. En el else he devuelto consigo un log con severidad Fatal, que envía un mensaje que se torna de la siguiente manera: 2022/03/04 22:53:04 100 .

Recurso principal donde puedes ver adelantos, además de todos los programas escritos:

Repositorio: 30 días de Go.

Recursos

YouTube Vídeos


  • John Doe
    43 Sales$156,24 Totals
    62%
  • Rosy O'Dowell
    12 Leads$56,24 Totals
    32%

With supporting text below as a natural lead-in to additional content.

Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled.