diff --git a/README.md b/README.md index c3e5268..4cd7ae2 100644 --- a/README.md +++ b/README.md @@ -12,3 +12,4 @@ https://www.youtube.com/watch?v=ID9NZ88JeOE 2. (00:56:07) struct //avanzado.go +1. (01:12:12) select diff --git a/avanzado.go b/avanzado.go new file mode 100644 index 0000000..17e1732 --- /dev/null +++ b/avanzado.go @@ -0,0 +1,44 @@ +package main + +import ( + "fmt" + "time" +) + +func Saluda() { + fmt.Println("Hola desde un goroutine") +} + +func imprimeNums(n int) { + for i := 0; i < n; i++ { + fmt.Println(i) + time.Sleep(time.Millisecond) + } +} + +func main() { + //go -> envia a otro hilo, las goroutinas son concurrentes, se ejecuta en paralelo + go Saluda() + time.Sleep(time.Second) + + fmt.Println("fin del goroutine") + + go imprimeNums(5) + go imprimeNums(5) + + time.Sleep(time.Second) + + // chan + ch := make(chan int) + go func() { + ch <- 64 + }() + val := <-ch // espera hasta que se reciba un valor en el canal + fmt.Println(val) + + ch2 := make(chan string, 2) // canal con bufer de 2 elementos + ch2 <- "hola" + ch2 <- "mundo" + fmt.Println(<-ch2) + fmt.Println(<-ch2) +}