Төмендегі код үзінділерінің қайсысы каналдармен жұмыс істеуге байланысты қате немесе әлеуетті мәселені қамтиды? 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 құбырында тесттер қалай өтті? Не бақылау жүргізілді?
Каналдардың диапазоны не қайтарады? 'for _, c := range chs' жазуы дұрыс па?
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)) }