| // Copyright 2015 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. |
| |
| package main |
| |
| import ( |
| "bytes" |
| |
| "./a" |
| ) |
| |
| type X struct { |
| *a.X |
| } |
| |
| type Intf interface { |
| Get() []byte |
| RetPtr(int) *int |
| RetRPtr(int) (int, *int) |
| } |
| |
| func main() { |
| x := &a.X{T: [32]byte{1, 2, 3, 4}} |
| var ix Intf = X{x} |
| t1 := ix.Get() |
| t2 := x.Get() |
| if !bytes.Equal(t1, t2) { |
| panic(t1) |
| } |
| |
| p1 := ix.RetPtr(5) |
| p2 := x.RetPtr(7) |
| if *p1 != 6 || *p2 != 8 { |
| panic(*p1) |
| } |
| |
| r1, r2 := ix.RetRPtr(10) |
| r3, r4 := x.RetRPtr(13) |
| if r1 != 11 || *r2 != 11 || r3 != 14 || *r4 != 14 { |
| panic("bad RetRPtr") |
| } |
| } |