Skip to content

Commit 04ed7a2

Browse files
authored
Merge pull request mouredev#4537 from N0HagoNada/main
#25 - go
2 parents 11b4586 + 1946bf6 commit 04ed7a2

File tree

2 files changed

+87
-1
lines changed

2 files changed

+87
-1
lines changed

Roadmap/24 - DECORADORES/go/N0HagoNada.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ func main() {
5555
}
5656

5757
fmt.Printf("Price of veggeMania with tomato and cheese topping is %d\n", pizzaWithCheeseAndTomato.getPrice())
58-
fmt.Println("-------------------------------------- RETO --------------------------------------------------------")
58+
fmt.Println("-------------------------------------- RETO ------------------------------------------------")
5959
// Aplicamos el decorador CountCalls a nuestra función de ejemplo ExampleFunction
6060
DecoratedFunction := CountCalls(ExampleFunction)
6161

Roadmap/25 - LOGS/go/N0HagoNada.go

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
package main
2+
3+
import (
4+
"log"
5+
"os"
6+
"sync"
7+
"time"
8+
)
9+
10+
var (
11+
logger *log.Logger
12+
once sync.Once
13+
)
14+
15+
func GetLogger() *log.Logger {
16+
once.Do(func() {
17+
logger = log.New(os.Stdout, "", log.LstdFlags|log.Lshortfile)
18+
})
19+
return logger
20+
}
21+
22+
type Tarea struct {
23+
Nombre string
24+
Descripcion string
25+
}
26+
27+
type GestorTareas struct {
28+
tareas []Tarea
29+
}
30+
31+
func (g *GestorTareas) AñadirTarea(nombre, descripcion string) {
32+
l := GetLogger()
33+
inicio := time.Now()
34+
35+
g.tareas = append(g.tareas, Tarea{Nombre: nombre, Descripcion: descripcion})
36+
37+
l.Printf("Tarea añadida: %s - %s", nombre, descripcion)
38+
l.Printf("Tiempo de ejecución para añadir tarea: %v", time.Since(inicio))
39+
}
40+
41+
func (g *GestorTareas) EliminarTarea(nombre string) {
42+
l := GetLogger()
43+
inicio := time.Now()
44+
45+
for i, tarea := range g.tareas {
46+
if tarea.Nombre == nombre {
47+
g.tareas = append(g.tareas[:i], g.tareas[i+1:]...)
48+
l.Printf("Tarea eliminada: %s", nombre)
49+
l.Printf("Tiempo de ejecución para eliminar tarea: %v", time.Since(inicio))
50+
return
51+
}
52+
}
53+
54+
l.Printf("No se encontró la tarea: %s", nombre)
55+
l.Printf("Tiempo de ejecución para buscar tarea: %v", time.Since(inicio))
56+
}
57+
58+
func (g *GestorTareas) ListarTareas() {
59+
l := GetLogger()
60+
inicio := time.Now()
61+
62+
l.Println("Lista de tareas:")
63+
for _, tarea := range g.tareas {
64+
l.Printf("- %s: %s", tarea.Nombre, tarea.Descripcion)
65+
}
66+
67+
l.Printf("Tiempo de ejecución para listar tareas: %v", time.Since(inicio))
68+
}
69+
70+
func main() {
71+
72+
l := GetLogger()
73+
l.Println("Iniciando programa de gestión de tareas")
74+
75+
gestor := &GestorTareas{}
76+
77+
gestor.AñadirTarea("Comprar víveres", "Ir al supermercado y comprar alimentos para la semana")
78+
gestor.AñadirTarea("Hacer ejercicio", "Realizar 30 minutos de cardio")
79+
gestor.ListarTareas()
80+
gestor.EliminarTarea("Hacer ejercicio")
81+
gestor.ListarTareas()
82+
gestor.EliminarTarea("Tarea inexistente")
83+
84+
l.Println("Finalizando programa de gestión de tareas")
85+
86+
}

0 commit comments

Comments
 (0)