github.com/F4RD1N/gomobile@v1.0.1/bind/testdata/interfaces.go (about) 1 // Copyright 2014 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package interfaces 6 7 type I interface { 8 Rand() int32 9 } 10 11 type SameI interface { 12 Rand() int32 13 } 14 15 type LargerI interface { 16 Rand() int32 17 AnotherFunc() 18 } 19 20 func Add3(r I) int32 { 21 return r.Rand() + r.Rand() + r.Rand() 22 } 23 24 // chosen by fair dice roll. 25 // guaranteed to be random. 26 type seven struct{} 27 28 func (seven) Rand() int32 { return 7 } 29 30 func Seven() I { return seven{} } 31 32 type WithParam interface { 33 HasParam(p bool) 34 } 35 36 type Error interface { 37 Err() error 38 } 39 40 func CallErr(e Error) error { 41 return e.Err() 42 } 43 44 // not implementable 45 type I1 interface { 46 J() 47 H() *seven // not bound 48 } 49 50 // not implementable 51 type I2 interface { 52 f() 53 G() 54 } 55 56 // implementable 57 // (the implementor has to find a source of I1s) 58 type I3 interface { 59 F() I1 60 } 61 62 // not bound 63 func F() seven { return seven{} } 64 func G(u seven) {} 65 66 // Interfaces is an interface with the same name as its package. 67 type Interfaces interface { 68 SomeMethod() 69 }