¿Cuál de los siguientes fragmentos de código contiene un error o problema potencial relacionado con el trabajo con canales? Opción 1 package main func main() { ch := make(chan int) ch <- 1 } Opción 2 package main func main() { ch := make(chan int, 1) ch <- 1 } Opción 3 package main func main() { ch := make(chan int, 1) ch <- 1 <-ch } Opción 4 package main func main() { ch := make(chan int) close(ch) <-ch } Opción 5 package main func main() { ch := make(chan int, 3) ch <- 4 }
Golang
¿Podría contarme sobre su experiencia trabajando con proyectos de código abierto y dar ejemplos de sus contribuciones a ellos?
¿Se puede pasar una cantidad arbitraria de argumentos a una función?
¿Cómo se desplegaron? ¿Pasos en el pipeline?
¿Existe tipificación dinámica en Go?
¿Qué en Go garantiza la seguridad de los hilos (thread safety)?
¿Cuáles son las formas de declarar un WaitGroup? ¿Cómo escribir un valor en un canal?
¿Cómo fueron las pruebas en la pipeline de CI/CD? ¿Qué se monitoreaba?
¿Qué devuelve el rango de canales? ¿Es válida la declaración: for _, c := range chs?
func fanin[T cualquier](chs ...<-chan T) chan T { out := make(chan T) wg := sync.WaitGroup{} for _, ch := range chs { wg.Add(1) go func(c <-chan T) { defer wg.Done() for v := range c { out <- v } }(ch) } go func() { wg.Wait() close(out) }() return out } func main() { ch1 := make(chan int, 5) ch2 := make(chan int, 5) for i := 1; i <= 5; i++ { ch1 <- i ch2 <- i * 2 } close(ch1) close(ch2) fmt.Println(fanin(ch1, ch2)) }