რომელი ქვემოთ მოცემული კოდის ფრაგმენტი შეიცავს შეცდომას ან პოტენციურ პრობლემას არხებთან მუშაობის დროს? ვარიანტი 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-ში თხელი უსაფრთხოებას (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)) }