mirror of
https://github.com/golang/go
synced 2024-11-15 00:40:31 -07:00
44 lines
678 B
Go
44 lines
678 B
Go
|
// 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")
|
||
|
}
|
||
|
}
|