1// run 2 3// Copyright 2011 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7// Test select when discarding a value. 8 9package main 10 11import "runtime" 12 13func recv1(c <-chan int) { 14 <-c 15} 16 17func recv2(c <-chan int) { 18 select { 19 case <-c: 20 } 21} 22 23func recv3(c <-chan int) { 24 c2 := make(chan int) 25 select { 26 case <-c: 27 case <-c2: 28 } 29} 30 31func send1(recv func(<-chan int)) { 32 c := make(chan int) 33 go recv(c) 34 runtime.Gosched() 35 c <- 1 36} 37 38func send2(recv func(<-chan int)) { 39 c := make(chan int) 40 go recv(c) 41 runtime.Gosched() 42 select { 43 case c <- 1: 44 } 45} 46 47func send3(recv func(<-chan int)) { 48 c := make(chan int) 49 go recv(c) 50 runtime.Gosched() 51 c2 := make(chan int) 52 select { 53 case c <- 1: 54 case c2 <- 1: 55 } 56} 57 58func main() { 59 send1(recv1) 60 send2(recv1) 61 send3(recv1) 62 send1(recv2) 63 send2(recv2) 64 send3(recv2) 65 send1(recv3) 66 send2(recv3) 67 send3(recv3) 68} 69