|  | // 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) | 
|  | } |