Исходники и презентации
This commit is contained in:
91
lessons/channels/operations_with_channel/main.go
Normal file
91
lessons/channels/operations_with_channel/main.go
Normal file
@ -0,0 +1,91 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func writeToNilChannel() {
|
||||
var ch chan int
|
||||
ch <- 1
|
||||
}
|
||||
|
||||
func writeToClosedChannel() {
|
||||
ch := make(chan int, 2)
|
||||
close(ch)
|
||||
ch <- 20
|
||||
}
|
||||
|
||||
// Descibe read after close
|
||||
|
||||
func readFromChannel() {
|
||||
ch := make(chan int, 2)
|
||||
ch <- 10
|
||||
ch <- 20
|
||||
|
||||
val, ok := <-ch
|
||||
fmt.Println(val, ok)
|
||||
|
||||
close(ch)
|
||||
val, ok = <-ch
|
||||
fmt.Println(val, ok)
|
||||
|
||||
val, ok = <-ch
|
||||
fmt.Println(val, ok)
|
||||
}
|
||||
|
||||
func readAnyChannels() {
|
||||
ch1 := make(chan int)
|
||||
ch2 := make(chan int)
|
||||
|
||||
go func() {
|
||||
ch1 <- 100
|
||||
}()
|
||||
|
||||
go func() {
|
||||
ch2 <- 200
|
||||
}()
|
||||
|
||||
select {
|
||||
case val1 := <-ch1:
|
||||
fmt.Println(val1)
|
||||
case val2 := <-ch2:
|
||||
fmt.Println(val2)
|
||||
}
|
||||
}
|
||||
|
||||
func readFromNilChannel() {
|
||||
var ch chan int
|
||||
<-ch
|
||||
}
|
||||
|
||||
func rangeNilChannel() {
|
||||
var ch chan int
|
||||
for range ch {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
func closeNilChannel() {
|
||||
var ch chan int
|
||||
close(ch)
|
||||
}
|
||||
|
||||
func closeChannelAnyTimes() {
|
||||
ch := make(chan int)
|
||||
close(ch)
|
||||
close(ch)
|
||||
}
|
||||
|
||||
func compareChannels() {
|
||||
ch1 := make(chan int)
|
||||
ch2 := make(chan int)
|
||||
|
||||
equal1 := ch1 == ch2
|
||||
equal2 := ch1 == ch1
|
||||
|
||||
fmt.Println(equal1)
|
||||
fmt.Println(equal2)
|
||||
}
|
||||
|
||||
func main() {
|
||||
}
|
||||
Reference in New Issue
Block a user