Төмөндө көрсөтүлгөн код бөлүктөрүнүн кайсы бири каналдар менен иштөөдө кате же потенциалдуу көйгөйдү камтыйт? 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 кантип жарыялоо керек? Каналда кандай маанини жазуу керек?
CI/CD pipeline'инде тесттер кандай өттү? Нелер көзөмөлдөндү?
Каналдар диапазону эмне кайтарат? for _, c := range chs деген жазуу туурабы?
func fanin[T arakə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)) }