github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/test/fixedbugs/bug329.go (about) 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 package main 8 9 type Value struct { 10 X interface{} 11 Y int 12 } 13 14 type Struct struct { 15 X complex128 16 } 17 18 const magic = 1 + 2i 19 20 func (Value) Complex(x complex128) { 21 if x != magic { 22 println(x) 23 panic("bad complex magic") 24 } 25 } 26 27 func f(x *byte, y, z int) complex128 { 28 return magic 29 } 30 31 func (Value) Struct(x Struct) { 32 if x.X != magic { 33 println(x.X) 34 panic("bad struct magic") 35 } 36 } 37 38 func f1(x *byte, y, z int) Struct { 39 return Struct{magic} 40 } 41 42 func main() { 43 var v Value 44 v.Struct(f1(nil, 0, 0)) // ok 45 v.Complex(f(nil, 0, 0)) // used to fail 46 }