1// run 2 3// Copyright 2020 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 7package main 8 9var ch chan int 10var x int 11 12func f() int { 13 close(ch) 14 ch = nil 15 return 0 16} 17 18func g() int { 19 ch = nil 20 x = 0 21 return 0 22} 23 24func main() { 25 var nilch chan int 26 var v int 27 var ok bool 28 _, _ = v, ok 29 30 ch = make(chan int) 31 select { 32 case <-ch: 33 case nilch <- f(): 34 } 35 36 ch = make(chan int) 37 select { 38 case v = <-ch: 39 case nilch <- f(): 40 } 41 42 ch = make(chan int) 43 select { 44 case v := <-ch: _ = v 45 case nilch <- f(): 46 } 47 48 ch = make(chan int) 49 select { 50 case v, ok = <-ch: 51 case nilch <- f(): 52 } 53 54 ch = make(chan int) 55 select { 56 case v, ok := <-ch: _, _ = v, ok 57 case nilch <- f(): 58 } 59 60 ch1 := make(chan int, 1) 61 ch = ch1 62 x = 42 63 select { 64 case ch <- x: 65 case nilch <- g(): 66 } 67 if got := <-ch1; got != 42 { 68 panic(got) 69 } 70} 71