package main type I interface { send(chan <- int) } type S struct { v int } func (p *S) send(c chan <- int) { c <- p.v } func main() { s := S{0}; var i I = &s; c := make(chan int); go i.send(c); if <- c != 0 { panic(0) } }