LEFT | RIGHT |
(no file at all) | |
| 1 // Copyright 2013 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 a |
| 6 |
| 7 type I interface { |
| 8 F() |
| 9 } |
| 10 |
| 11 type foo1 []byte |
| 12 type foo2 []rune |
| 13 type foo3 []uint8 |
| 14 type foo4 []int32 |
| 15 type foo5 string |
| 16 type foo6 string |
| 17 type foo7 string |
| 18 type foo8 string |
| 19 type foo9 string |
| 20 |
| 21 func (f foo1) F() { return } |
| 22 func (f foo2) F() { return } |
| 23 func (f foo3) F() { return } |
| 24 func (f foo4) F() { return } |
| 25 func (f foo5) F() { return } |
| 26 func (f foo6) F() { return } |
| 27 func (f foo7) F() { return } |
| 28 func (f foo8) F() { return } |
| 29 func (f foo9) F() { return } |
| 30 |
| 31 func Test1(s string) I { return foo1(s) } |
| 32 func Test2(s string) I { return foo2(s) } |
| 33 func Test3(s string) I { return foo3(s) } |
| 34 func Test4(s string) I { return foo4(s) } |
| 35 func Test5(s []byte) I { return foo5(s) } |
| 36 func Test6(s []rune) I { return foo6(s) } |
| 37 func Test7(s []uint8) I { return foo7(s) } |
| 38 func Test8(s []int32) I { return foo8(s) } |
| 39 func Test9(s int) I { return foo9(s) } |
| 40 |
| 41 type bar map[int]int |
| 42 |
| 43 func (b bar) F() { return } |
| 44 |
| 45 func TestBar() I { return bar{1: 2} } |
| 46 |
| 47 type baz int |
| 48 |
| 49 func IsBaz(x interface{}) bool { _, ok := x.(baz); return ok } |
| 50 |
| 51 type baz2 int |
| 52 |
| 53 func IsBaz2(x interface{}) bool { |
| 54 switch x.(type) { |
| 55 case baz2: |
| 56 return true |
| 57 default: |
| 58 return false |
| 59 } |
| 60 } |
LEFT | RIGHT |