Compare commits

...

2 Commits

Author SHA1 Message Date
lbenedar
cb314c36a9 add ch12_2 2026-02-21 15:17:10 +03:00
lbenedar
e66d76ddc9 add changes to ch12_1 2026-02-21 14:41:54 +03:00
4 changed files with 87 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.exe

39
ch12/1/ch12_1.go Normal file
View File

@@ -0,0 +1,39 @@
package main
import (
"fmt"
"math/rand"
)
func PrintNumbers() {
const IN_CHAN_NUM = 2
numCh := make(chan int, 20)
completeCh := make(chan int)
defer close(numCh)
defer close(completeCh)
for i := 0; i < IN_CHAN_NUM; i++ {
go func() {
for j := 0; j < 10; j++ {
numCh <- (rand.Int() % 100)
}
}()
}
go func() {
i := 0
for num := range numCh {
fmt.Println(num)
i++
if i == 20 {
break
}
}
completeCh <- 1
}()
select {
case <-completeCh:
}
}
func main() {
PrintNumbers()
}

44
ch12/2/ch12_2.go Normal file
View File

@@ -0,0 +1,44 @@
package main
import (
"fmt"
"math/rand"
)
func PrintNumbers() {
const chNum = 2
firstCh := make(chan int, 10)
secondCh := make(chan int, 20)
defer close(firstCh)
defer close(secondCh)
go func() {
for j := 0; j < 10; j++ {
firstCh <- (rand.Int() % 100)
}
}()
go func() {
for j := 0; j < 10; j++ {
secondCh <- (rand.Int() % 100)
}
}()
i := 0
forLoop:
for {
select {
case val1 := <-firstCh:
fmt.Printf("(%d) From first channel: %d\n", i+1, val1)
case val2 := <-secondCh:
fmt.Printf("(%d) From second channel: %d\n", i+1, val2)
}
i++
if i == chNum*10 {
break forLoop
}
}
}
func main() {
PrintNumbers()
}

3
ch12/2/go.mod Normal file
View File

@@ -0,0 +1,3 @@
module gitea.local.lab/Lbenedar/learning_go/ch12/2
go 1.25.0