Welke van de volgende codefragmenten bevat een fout of potentieel probleem gerelateerd aan het werken met kanalen? Optie 1 package main func main() { ch := make(chan int) ch <- 1 } Optie 2 package main func main() { ch := make(chan int, 1) ch <- 1 } Optie 3 package main func main() { ch := make(chan int, 1) ch <- 1 <-ch } Optie 4 package main func main() { ch := make(chan int) close(ch) <-ch } Optie 5 package main func main() { ch := make(chan int, 3) ch <- 4 }
Golang
Kunt u vertellen over uw ervaring met open source projecten en voorbeelden geven van uw bijdragen?
Kun je een willekeurig aantal argumenten doorgeven aan een functie?
Wat in Go zorgt voor thread safety?
Hoe zijn ze gedeployed? Stappen in de pipeline?
Is er dynamische typisering in Go?
Hoe declareer je een WaitGroup? Hoe schrijf je een waarde naar een kanaal?
Wat retourneert het bereik van kanalen? Is de verklaring: for _, c := range chs geldig?
Hoe verliepen de tests in de CI/CD-pipeline? Wat werd er gevolgd?
func fanin[T any](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)) }