/* * Just some simple things in a package. */ package simple import "strconv" // This is essentially private, because it starts with a lower-case letter. var value int // This is visible. var Label string = "Simple" // This is public, too. But not its contents, since they're all lc. type Collection struct { left int right int } // Here are some public methods. func (c *Collection) Init(l int, r int) { c.left = l c.right = r } func (c *Collection) Swap() { c.left, c.right = c.right, c.left } func (c *Collection) Move(m int) { c.left, c.right = c.left + m, c.right - m } // Here's some private functions func (c *Collection) max() int { if c.right > c.left { return c.right } else { return c.left } } func (c *Collection) min() int { if c.right < c.left { return c.right } else { return c.left } } // A public one that uses the private ones. func (c *Collection) Sort() { c.left, c.right = c.min(), c.max() } // Get the information func (c *Collection) Report() string { return Label + " " + strconv.Itoa(c.left) + " " + strconv.Itoa(c.right) } // There's no rule against public top-level fuctions func Version() string { return "Simple 1.143" }