Files
deep_go/lessons/channels/operations_with_channel/main.go

92 lines
1.0 KiB
Go
Raw Normal View History

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() {
}