Modulos incluidos en la libreria local de golang
Modulo time
Documentación oficial:
Fecha actual del servidor
fmt.Println("La Hora Actual es:", time.Now())
Output:
La Hora Actual es: 2025-05-20 14:28:33.681341122 -0300 -03 m=+0.000118244
Mostrar año
fecha := time.Now()
fmt.Println("El año es: ", fecha.Year())
Output:
El año es: 2025
Mostrar mes
fecha := time.Now()
fmt.Println("El mes es: ", fecha.Month())
Output:
El mes es: May
Mostrar número de mes
fecha := time.Now()
fmt.Println("El número del mes es: ", int(fecha.Month()))
Output:
El número del mes es: 5
Mostrar el día
fecha := time.Now()
fmt.Println("El día es:", fecha.Day())
Output:
El día es: 20
Mostrar hora, minutos, segundos
fecha := time.Now()
fmt.Println("La hora es:", fecha.Day())
fmt.Println("Los minutos son:", fecha.Minute())
fmt.Println("Los segundos son:", fecha.Second())
Output:
La hora es: 20
Los minutos son: 32
Los segundos son: 10
Tipo time.Time
Este tipo de variable se debe usar en un struct si necesitas un tipo Time.
fmt.Printf("El tipo es: %T \n", fecha)
Output:
El tipo es: time.Time
Fecha en formato dd/mm/yyyy
Este tipo de variable se debe usar en un struct si necesitas un tipo Time.
fmt.Printf("%v/%v/%v \n", fecha.Day(), int(fecha.Month()), fecha.Year())
Output:
Tuesday 20 de May de 2025 a las 14:36:16
Operaciones con fechas en formato dd/mm/yyyy
ahora := time.Now()
fmt.Printf("%v/%v/%v \n", ahora.Day(), int(ahora.Month()), ahora.Year())
// 20/5/2025
// Suma 20 días a la fecha "ahora"
addedDays := 20
fecha1 := ahora.AddDate(0, 0, addedDays)
fmt.Printf("%v/%v/%v \n", fecha1.Day(), int(fecha1.Month()), fecha1.Year())
// 9/6/2025
// Resta 20 días a la fecha "ahora"
removedDays := 20
fecha2 := ahora.AddDate(0, 0, -removedDays)
fmt.Printf("%v/%v/%v \n", fecha2.Day(), int(fecha2.Month()), fecha2.Year())
// 30/4/2025
módulo strings
Documentación oficial:
Convertir cadena a mayúsculas
cadena := "mi muñeca me habla..."
fmt.Println(strings.ToUpper(cadena))
// MI MUÑECA ME HABLA...
Convertir cadena a minusculas
cadena_may := "MI MUÑECA ME HABLA..."
fmt.Println(strings.ToLower(cadena_may))
// mi muñeca me habla...
Buscar índice de una palabra en la cadena
// Obtener indice de una palabra en una cadena
post := strings.Index(cadena, "muñeca")
fmt.Println("Indice de la palabra muñeca en la cadena:", post)
// Indice de la palabra muñeca en la cadena: 3
Obtener todos los simbolos de la cadena en un array
cadena := "mi muñeca me habla..."
simbolos := strings.Split(cadena, "")
fmt.Println(simbolos)
// [m i m u ñ e c a m e h a b l a . . .]
Repetir la cadena dos veces
cadena := "mi muñeca me habla..."
repetida := strings.Repeat(cadena, 2)
fmt.Println(repetida)
// mi muñeca me habla...mi muñeca me habla...
Reemplazo la cadena mi por la en la cadena original
cadena := "mi muñeca me habla..."
cadena_nueva := strings.Replace(cadena, "mi", "la", -1)
fmt.Println(cadena_nueva)
Substrings
// De la posicion 0 hasta la 5 sin incluirla
fmt.Println(string(cadena_nueva[0:5]))
// la mu
// De la posicion 5 hasta la 9 sin incluirla
fmt.Println(string(cadena_nueva[5:9]))
// ñec
Modulo math/rand
Documentación:
// Numeros aleatorios desde 1 hasta 101
aleatorio := rand.Intn(101)
fmt.Println(aleatorio)
// Aleatorio entre un rango 1000 y 10000
min := 1000
max := 10000
aleatorio2 := rand.Intn((max - min) + min)
fmt.Println(aleatorio2)
Modulo OS
Documentación:
Recibir argumentos en el comand "go run"
flagName := "nombre"
flagValue := ""
flagUsage := "El nombre de la persona"
nombreFlag := flag.String(flagName, flagValue, flagUsage)
flagEdadName := "edad"
flagEdadValue := 18
flagEdadUsage := "la edad de la persona"
edadFlag := flag.Int(flagEdadName, flagEdadValue, flagEdadUsage)
flag.Parse()
fmt.Print("Tu nombre es:", *nombreFlag)
fmt.Print("\nTu edad es:", *edadFlag)
go run . -nombre Julian -edad 33
Tu nombre es:Julian
Tu edad es:33
Modulo log
Este módulo es util para mostrar mensajes por salida de la terminal o guardarlos en un archivo de logs
log.Fatal("hola soy un error")
fmt.Println("Hola soy otro texto")
log.Fatal muestra un error por terminal y corto la ejecución no mostrando el texto "Hola soy otro texto"
182025/05/28 16:19:16 hola soy un error
exit status 1
Instanciar nuevo error y mostrarlo con Fatal
err := errors.New("este es un error fatal")
log.Fatal(err)
182025/05/28 16:21:16 este es un error fatal
exit status 1
Mostrar mensaje por terminal
log.Println("hola soy un log")
182025/05/28 16:22:12 hola soy un log
Fatal con formato
log.Fatalf("%s Fatal: Fatal Error Signal", "Error Type")
2025/05/28 16:23:22 Error Type Fatal: Fatal Error Signal
exit status 1
Panic
log.Panic("Error: Panic")
2025/05/28 16:23:52 Error: Panic
panic: Error: Panic
goroutine 1 [running]:
log.Panic({0xc00009bf10?, 0x0?, 0x2?})
/usr/local/go/src/log/log.go:432 +0x5a
main.main()
/home/julian/cursos/go/modulos/main.go:166 +0x1498
exit status 2
Panic vs Fatal

PanicLn
log.Panicln("Error: Panic")
2025/05/28 16:24:38 Error: Panic
panic: Error: Panic
goroutine 1 [running]:
log.Panicln({0xc00009bf10?, 0x0?, 0x2?})
/usr/local/go/src/log/log.go:446 +0x5a
main.main()
/home/julian/cursos/go/modulos/main.go:179 +0x1498
exit status 2
Panicf
log.Panicf("error %s", err)
2025/05/28 16:26:23 error este es un error fatal
panic: error este es un error fatal
goroutine 1 [running]:
log.Panicf({0x4d0ae3?, 0x0?}, {0xc00009bf10?, 0xc00009bf20?, 0x2?})
/usr/local/go/src/log/log.go:439 +0x65
main.main()
/home/julian/cursos/go/modulos/main.go:193 +0x14d4
exit status 2
Guardar logs en un archivo
f, err := os.OpenFile("logs.log", os.O_APPEND|os.O_CREATE|os.O_RDWR, 0666)
if err != nil {
log.Fatal(err)
}
// Cerrar el archivo
defer f.Close()
log.SetOutput(f)
log.Printf("Error línea %v", 1)
s.O_APPEND: todos los datos escritos se añadirán al final del archivo (modo "append").os.O_CREATE: si el archivo no existe, lo crea.os.O_RDWR: abre el archivo para lectura y escritura.0666: son los permisos del archivo en octal- Es decir:
rw-rw-rw-
- Es decir:
Se deberia generar en un archivo logs.log en el mismo directorio, el cual
contiene los logs generados por el main.
2025/05/28 16:26:23 error este es un error fatal
panic: error este es un error fatal
goroutine 1 [running]:
log.Panicf({0x4d0ae3?, 0x0?}, {0xc00009bf10?, 0xc00009bf20?, 0x2?})
/usr/local/go/src/log/log.go:439 +0x65
main.main()
/home/julian/cursos/go/modulos/main.go:193 +0x14d4
exit status 2
Modulos custom
- Primero necesitamos el archivo go.mod creado
- Declarado el package main
- Crear carpeta del modulo (e.g "modulo_ejemplo")
- Dentro de esa carpeta crear un archivo go
modulo_ejemplo.go - Agregar en la primera linea
package modulo_ejemplo - Lo importo en el main con
modulo_ejemplo
Modulo "modulo_ejemplo"
package modulo_ejemplo
// La primer mayuscula hace publico el evento
func Ejemplo1() string {
return "saluda"
}
func Ejemplo2(name string) string {
return "saluda " + name
}
import (
"fmt"
mod "modulos/modulo_ejemplo"
)
fmt.Println(mod.Ejemplo1())
fmt.Println(mod.Ejemplo2("julian"))