Apparently go 1.0 does not handle the case where two branches of an if then else both have returns, but the function does not.  Go 1.1 handles this case fine.  Code updated to compile and execute properly on Go 1.0.