| // RUN: llgo -o %t %s |
| // RUN: %t 2>&1 | FileCheck %s |
| |
| // CHECK: 0 0 |
| // CHECK-NEXT: 0 1 |
| // CHECK-NEXT: 10 |
| // CHECK-NEXT: 20 |
| // CHECK-NEXT: 30 |
| // CHECK-NEXT: 40 |
| // CHECK-NEXT: 50 |
| // CHECK-NEXT: 60 |
| // CHECK-NEXT: 70 |
| // CHECK-NEXT: 80 |
| // CHECK-NEXT: 90 |
| // CHECK-NEXT: 100 |
| // CHECK-NEXT: -1 |
| |
| package main |
| |
| func main() { |
| c := make(chan int) |
| println(len(c), cap(c)) |
| c1 := make(chan int, 1) |
| println(len(c1), cap(c1)) |
| f := func() { |
| n, ok := <-c |
| if ok { |
| c1 <- n * 10 |
| } else { |
| c1 <- -1 |
| } |
| } |
| for i := 0; i < 10; i++ { |
| go f() |
| c <- i + 1 |
| println(<-c1) |
| } |
| go f() |
| close(c) |
| println(<-c1) |
| } |