...
Run Format

Source file test/chan/select7.go

Documentation: test/chan

  // run
  
  // Copyright 2011 The Go Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style
  // license that can be found in the LICENSE file.
  
  // Test select when discarding a value.
  
  package main
  
  import "runtime"
  
  func recv1(c <-chan int) {
  	<-c
  }
  
  func recv2(c <-chan int) {
  	select {
  	case <-c:
  	}
  }
  
  func recv3(c <-chan int) {
  	c2 := make(chan int)
  	select {
  	case <-c:
  	case <-c2:
  	}
  }
  
  func send1(recv func(<-chan int)) {
  	c := make(chan int)
  	go recv(c)
  	runtime.Gosched()
  	c <- 1
  }
  
  func send2(recv func(<-chan int)) {
  	c := make(chan int)
  	go recv(c)
  	runtime.Gosched()
  	select {
  	case c <- 1:
  	}
  }
  
  func send3(recv func(<-chan int)) {
  	c := make(chan int)
  	go recv(c)
  	runtime.Gosched()
  	c2 := make(chan int)
  	select {
  	case c <- 1:
  	case c2 <- 1:
  	}
  }
  
  func main() {
  	send1(recv1)
  	send2(recv1)
  	send3(recv1)
  	send1(recv2)
  	send2(recv2)
  	send3(recv2)
  	send1(recv3)
  	send2(recv3)
  	send3(recv3)
  }
  

View as plain text