I'm a bit confused when I see code such as:
bigBox := &BigBox{}
bigBox.BubbleGumsCount = 4          // correct...
bigBox.SmallBox.AnyMagicItem = true // also correct
Why, or when, would I want to do bigBox := &BigBox{} instead of bigBox := BigBox{} ? Is it more efficient in some way? 
Code sample was taken from here.
Sample no.2:
package main
import "fmt"
type Ints struct {
  x int
  y int
}
func build_struct() Ints {
  return Ints{0,0}
}
func build_pstruct() *Ints {
  return &Ints{0,0}
}
func main() {
  fmt.Println(build_struct())
  fmt.Println(build_pstruct())
}
Sample no. 3: ( why would I go with &BigBox in this example, and not with BigBox as a struct directly ? )
func main() {
  bigBox := &BigBox{}
  bigBox.BubbleGumsCount = 4 
  fmt.Println(bigBox.BubbleGumsCount)
}
Is there ever a reason to call build_pstruct instead of the the build_struct variant? Isn't that why we have the GC?
 
     
     
     
     
     
    