title: Go closure captured variable and shared data?
body: <p>I just observed and confirmed that Go closure captures external variables by reference. If the variable is captured into a Goroutine and if the Goroutine multiplexed into different thread, </p>
  
  <ul>
  <li>is it safe to modify the value in the closure? </li>
  <li>If it's not safe, why doesn't Go prevent this? </li>
  <li>Or does it employ some safety mechanism? (such as lock)</li>
  </ul>