package main import "fmt" type counter struct { count int } func (c counter) inc() counter { c.count = c.count + 1 return c } func (c counter) get() int { return c.count } func (c counter) reset() counter { c.count = 0 return c } func main() { c := counter{} fmt.Println(c.get()) // 0 c = c.inc() fmt.Println(c.get()) // 1 c = c.inc() c = c.inc() fmt.Println(c.get()) // 3 c = c.reset() fmt.Println(c.get()) // 0 }