Sobes.tech

Golang

Care dintre următoarele fragmente de cod conține o eroare sau o problemă potențială legată de lucrul cu canale? Opțiunea 1 package main func main() { ch := make(chan int) ch <- 1 } Opțiunea 2 package main func main() { ch := make(chan int, 1) ch <- 1 } Opțiunea 3 package main func main() { ch := make(chan int, 1) ch <- 1 <-ch } Opțiunea 4 package main func main() { ch := make(chan int) close(ch) <-ch } Opțiunea 5 package main func main() { ch := make(chan int, 3) ch <- 4 }

Senior
200

Ai putea să ne vorbești despre experiența ta cu proiecte open source și să oferi exemple ale contribuțiilor tale?

Senior
193

Se poate transmite un număr arbitrar de argumente către o funcție?

Junior
146

Cum au fost implementate? Pașii în pipeline?

Senior
144

Există tipizare dinamică în Go?

Junior
141

Ce asigură siguranța firelor (thread safety) în Go?

Junior
133

Care sunt modalitățile de a declara un WaitGroup? Cum se scrie o valoare într-un canal?

Senior
130

Cum au decurs testele în pipeline-ul CI/CD? Ce s-a urmărit?

Senior
99

Ce returnează intervalul de canale? Este validă declarația: for _, c := range chs?

Senior
94

func fanin[T orice](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)) }

Senior
84