|  | // 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 zero length structs. | 
|  | // Used to not be evaluated. | 
|  | // Issue 2232. | 
|  |  | 
|  | package main | 
|  |  | 
|  | func recv(c chan interface{}) struct{} { | 
|  | return (<-c).(struct{}) | 
|  | } | 
|  |  | 
|  | var m = make(map[interface{}]int) | 
|  |  | 
|  | func recv1(c chan interface{}) { | 
|  | defer rec() | 
|  | m[(<-c).(struct{})] = 0 | 
|  | } | 
|  |  | 
|  | func rec() { | 
|  | recover() | 
|  | } | 
|  |  | 
|  | func main() { | 
|  | c := make(chan interface{}) | 
|  | go recv(c) | 
|  | c <- struct{}{} | 
|  | go recv1(c) | 
|  | c <- struct{}{} | 
|  | } |