xxxxxxxxxx
package main
import (
"fmt"
)
func overwrite(n chan int) {
<-n
n <- 2021
c := <-n
fmt.Println(c)
}
func main() {
ch := make(chan int, 1)
ch <- 2022
overwrite(ch)
}
xxxxxxxxxx
package main
import "fmt"
func sum(s []int, c chan int) {
sum := 0
for _, v := range s {
sum += v
}
c <- sum // send sum to c
}
func main() {
s := []int{7, 2, 8, -9, 4, 0}
c := make(chan int)
go sum(s[:len(s)/2], c)
go sum(s[len(s)/2:], c)
x, y := <-c, <-c // receive from c
fmt.Println(x, y, x+y)
}
xxxxxxxxxx
package main
import (
"fmt"
"time"
)
func main() {
// channel with capacity of 2
message := make(chan string, 2)
go func() {
message <- "ping 1"
message <- "ping 2"
message <- "ping 3"
}()
go func() {
time.Sleep(time.Second)
defer close(message)
}()
for msg := range message {
fmt.Println(msg)
}
}