1
2
3
4
5 package p
6
7 func _[C chan<- int | chan int](c C) { c <- 0 }
8 func _[C chan int | chan<- int](c C) { c <- 0 }
9 func _[C <-chan int | chan<- int](c C) { c <- 0 }
10
11 func _[C <-chan int | chan int](c C) { <-c }
12 func _[C chan int | <-chan int](c C) { <-c }
13 func _[C chan<- int | <-chan int](c C) { <-c }
14
15
16
17 func send[C interface{ ~chan<- V | ~chan V }, V any](c C, v V) {
18 c <- v
19 }
20
21 func receive[C interface{ ~<-chan V | ~chan V }, V any](c C) V {
22 return <-c
23 }
24
View as plain text