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