in the Go specification, under "Declarations and Scope", it states:
``The scope of a constant or variable identifier declared inside a
function begins at the end of the ConstSpec or VarSpec and ends at the
end of the innermost containing block.''
that is, the scope of the x in the second var declaration starts after that
var declaration, hence x in the assigned expression refers to the previously
declared x.