Source file
test/interface/returntype.go
1
2
3
4
5
6
7
8
9 package main
10
11 type S struct { a int }
12 type T struct { b string }
13
14 func (s *S) Name() int8 { return 1 }
15 func (t *T) Name() int64 { return 64 }
16
17 type I1 interface { Name() int8 }
18 type I2 interface { Name() int64 }
19
20 func main() {
21 shouldPanic(p1)
22 }
23
24 func p1() {
25 var i1 I1
26 var s *S
27 i1 = s
28 print(i1.(I2).Name())
29 }
30
31 func shouldPanic(f func()) {
32 defer func() {
33 if recover() == nil {
34 panic("function should panic")
35 }
36 }()
37 f()
38 }
39
View as plain text