Welcher der folgenden Codeausschnitte enthält einen Fehler oder ein potenzielles Problem im Zusammenhang mit der Arbeit mit Kanälen? Option 1 package main func main() { ch := make(chan int) ch <- 1 } Option 2 package main func main() { ch := make(chan int, 1) ch <- 1 } Option 3 package main func main() { ch := make(chan int, 1) ch <- 1 <-ch } Option 4 package main func main() { ch := make(chan int) close(ch) <-ch } Option 5 package main func main() { ch := make(chan int, 3) ch <- 4 }
Golang
Könnten Sie über Ihre Erfahrungen mit Open-Source-Projekten sprechen und Beispiele Ihrer Beiträge nennen?
Kann man einer Funktion eine beliebige Anzahl von Argumenten übergeben?
Wie wurden sie deployed? Schritte im Pipeline?
Gibt es dynamische Typisierung in Go?
Was in Go sorgt für Thread-Sicherheit?
Welche Möglichkeiten gibt es, eine WaitGroup zu deklarieren? Wie schreibt man einen Wert in einen Kanal?
Wie verliefen die Tests in der CI/CD-Pipeline? Was wurde überwacht?
Was gibt der Bereich der Kanäle zurück? Ist die Anweisung: for _, c := range chs gültig?
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)) }