Source file test/chan/select4.go

     1  // run
     2  
     3  // Copyright 2010 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 that a select statement proceeds when a value is ready.
     8  
     9  package main
    10  
    11  func f() *int {
    12  	println("BUG: called f")
    13  	return new(int)
    14  }
    15  
    16  func main() {
    17  	var x struct {
    18  		a int
    19  	}
    20  	c := make(chan int, 1)
    21  	c1 := make(chan int)
    22  	c <- 42
    23  	select {
    24  	case *f() = <-c1:
    25  		// nothing
    26  	case x.a = <-c:
    27  		if x.a != 42 {
    28  			println("BUG:", x.a)
    29  		}
    30  	}
    31  }
    32  

View as plain text