github.com/llvm-mirror/llgo@v0.0.0-20190322182713-bf6f0a60fce1/test/execution/chan/buffered.go (about)

     1  // RUN: llgo -o %t %s
     2  // RUN: %t 2>&1 | FileCheck %s
     3  
     4  // CHECK: 0 0
     5  // CHECK-NEXT: 0 1
     6  // CHECK-NEXT: 10
     7  // CHECK-NEXT: 20
     8  // CHECK-NEXT: 30
     9  // CHECK-NEXT: 40
    10  // CHECK-NEXT: 50
    11  // CHECK-NEXT: 60
    12  // CHECK-NEXT: 70
    13  // CHECK-NEXT: 80
    14  // CHECK-NEXT: 90
    15  // CHECK-NEXT: 100
    16  // CHECK-NEXT: -1
    17  
    18  package main
    19  
    20  func main() {
    21  	c := make(chan int)
    22  	println(len(c), cap(c))
    23  	c1 := make(chan int, 1)
    24  	println(len(c1), cap(c1))
    25  	f := func() {
    26  		n, ok := <-c
    27  		if ok {
    28  			c1 <- n * 10
    29  		} else {
    30  			c1 <- -1
    31  		}
    32  	}
    33  	for i := 0; i < 10; i++ {
    34  		go f()
    35  		c <- i + 1
    36  		println(<-c1)
    37  	}
    38  	go f()
    39  	close(c)
    40  	println(<-c1)
    41  }