package main import "fmt2" type geometry interface { area() float64 perim() float64 } type rect struct { width, height float64 } func (r rect) perim() float64 { return 2*r.width + 2*r.height } func (r rect) area() float64 { return r.width * r.height } func test1() { a := geometry(nil) var b geometry = (geometry)(nil) assert(a == nil) assert(b == nil) var r *rect b = r assert(b != nil) } //////////////////////////////////// type I interface { printVal() } type S struct { i int } func (s S) printVal() { assert(s.i == 0) fmt2.Println(s.i) } func test2() { var i I var s S i = s s.i = 9 i.printVal() } func main() { test1() test2() }