|  | // 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") | 
|  | } | 
|  | } |