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