compiler: implement deferring of interface calls

This commit is contained in:
Ayke van Laethem
2018-11-03 20:21:43 +01:00
parent 8f8942d763
commit a531caa2e9
3 changed files with 164 additions and 68 deletions
+11
View File
@@ -8,6 +8,14 @@ func (t Thing) String() string {
return t.name
}
func (t Thing) Print(arg string) {
println("Thing.Print:", t.name, "arg:", arg)
}
type Printer interface {
Print(string)
}
func main() {
thing := &Thing{"foo"}
@@ -49,6 +57,9 @@ func testDefer() {
defer deferred("...run as defer", i)
i++
var t Printer = &Thing{"foo"}
defer t.Print("bar")
println("deferring...")
}
+1
View File
@@ -1,5 +1,6 @@
hello from function pointer: 5
deferring...
Thing.Print: foo arg: bar
...run as defer 3
...run closure deferred: 4
...run as defer 1