Қайсысы келесі код үзінділерінің бірі арналармен жұмыс істеу кезінде қате немесе әлеуетті мәселені қамтиды? 1-ші нұсқа package main func main() { ch := make(chan int) ch <- 1 } 2-ші нұсқа package main func main() { ch := make(chan int, 1) ch <- 1 } 3-ші нұсқа package main func main() { ch := make(chan int, 1) ch <- 1 <-ch } 4-ші нұсқа package main func main() { ch := make(chan int) close(ch) <-ch } 5-ші нұсқа package main func main() { ch := make(chan int, 3) ch <- 4 }
Golang
Оё метавонед дар бораи таҷрибаи кор бо лоиҳаҳои коди кушода гап занед ва намунаҳои саҳми худро дар онҳо оваред?
Оё имкон дорад, ки ба функсия шумораи номаълуми аргументҳоро гузорем?
Чӣ тавр деплой шуданд? Қадамҳо дар pipeline?
Оё дар Go типбандии динамикӣ вуҷуд дорад?
Чӣ дар Go кафолат медиҳад бехатарии сатрҳо (thread safety)?
Чӣ тавр метавон WaitGroup-ро эълон кард? Чӣ гуна арзишро дар канал нависем?
Диапазони каналҳо чӣ гуна бармегардад? Оё навиштани: for _, c := range chs дуруст аст?
Тестҳо дар пайплайни CI/CD чӣ гуна гузаштанд? Чӣ назаррас буд?
func fanin[T ҳар чӣ](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)) }