Kurš no šiem koda fragmentiem satur kļūdu vai potenciālu problēmu, kas saistīta ar kanālu darbu? 1. variants package main func main() { ch := make(chan int) ch <- 1 } 2. variants package main func main() { ch := make(chan int, 1) ch <- 1 } 3. variants package main func main() { ch := make(chan int, 1) ch <- 1 <-ch } 4. variants package main func main() { ch := make(chan int) close(ch) <-ch } 5. variants package main func main() { ch := make(chan int, 3) ch <- 4 }
Golang
Vai jūs varētu pastāstīt par savu pieredzi ar atvērtā koda projektiem un sniegt piemērus par jūsu ieguldījumu tajos?
Vai funkcijai var nodot jebkuru argumentu skaitu?
Kā tika izvietots? Soliņi pipeline?
Vai Go ir dinamiskā tipizācija?
Kas nodrošina Go drošību pavedienu līmenī (thread safety)?
Kā deklarēt WaitGroup? Kā ierakstīt vērtību kanālā?
Ko atgriež kanālu diapazons? Vai ir derīga deklarācija: for _, c := range chs?
Kā noritēja testi CI/CD pipeline? Ko uzraudzīja?
func fanin[T jebkāds](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)) }