blob: eebb091fcf1d8dbff834572b47c9b305fb5573b4 [file] [log] [blame]
// Copyright 2014 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 interfaces
type I interface {
Rand() int32
}
func Add3(r I) int32 {
return r.Rand() + r.Rand() + r.Rand()
}
// chosen by fair dice roll.
// guaranteed to be random.
type seven struct{}
func (seven) Rand() int32 { return 7 }
func Seven() I { return seven{} }
type WithParam interface {
HasParam(p bool)
}
type Error interface {
Err() error
}
func CallErr(e Error) error {
return e.Err()
}
// not implementable
type I1 interface {
J()
H() *seven // not bound
}
// not implementable
type I2 interface {
f()
G()
}
// implementable
// (the implementor has to find a source of I1s)
type I3 interface {
F() I1
}
// not bound
func F() seven { return seven{} }
func G(u seven) {}