package main
import "fmt"
func main() {
canal1 := make(chan string, 1)
canal2 := make(chan string, 1)
// Ambos canales están listos con un mensaje
canal1 <- "Mensaje del Canal A"
canal2 <- "Mensaje del Canal B"
// EXPRESIÓN COMANDO NO-DETERMINÍSTICA
// El lenguaje no garantiza cuál se ejecutará primero.
select {
case msg1 := <-canal1:
fmt.Println("Ejecutado por decisión aleatoria:", msg1)
case msg2 := <-canal2:
fmt.Println("Ejecutado por decisión aleatoria:", msg2)
}
}
cGFja2FnZSBtYWluCgppbXBvcnQgImZtdCIKCmZ1bmMgbWFpbigpIHsKICAgIGNhbmFsMSA6PSBtYWtlKGNoYW4gc3RyaW5nLCAxKQogICAgY2FuYWwyIDo9IG1ha2UoY2hhbiBzdHJpbmcsIDEpCgogICAgLy8gQW1ib3MgY2FuYWxlcyBlc3TDoW4gbGlzdG9zIGNvbiB1biBtZW5zYWplCiAgICBjYW5hbDEgPC0gIk1lbnNhamUgZGVsIENhbmFsIEEiCiAgICBjYW5hbDIgPC0gIk1lbnNhamUgZGVsIENhbmFsIEIiCgogICAgLy8gRVhQUkVTScOTTiBDT01BTkRPIE5PLURFVEVSTUlOw41TVElDQQogICAgLy8gRWwgbGVuZ3VhamUgbm8gZ2FyYW50aXphIGN1w6FsIHNlIGVqZWN1dGFyw6EgcHJpbWVyby4KICAgIHNlbGVjdCB7CiAgICBjYXNlIG1zZzEgOj0gPC1jYW5hbDE6CiAgICAgICAgZm10LlByaW50bG4oIkVqZWN1dGFkbyBwb3IgZGVjaXNpw7NuIGFsZWF0b3JpYToiLCBtc2cxKQogICAgY2FzZSBtc2cyIDo9IDwtY2FuYWwyOgogICAgICAgIGZtdC5QcmludGxuKCJFamVjdXRhZG8gcG9yIGRlY2lzacOzbiBhbGVhdG9yaWE6IiwgbXNnMikKICAgIH0KfQ==