title: Can someone explain why GOPATH is convenient and how it should be used in general?
body: <p>I am new to Go programming language and every tutorial starts off from setting GOPATH to current project folder. </p>
  
  <p>Am I missing something? Is programmer really supposed to set GOPATH manually when he <code>cd</code> to his new Go project folder? I have read several FAQ entries about GOPATH but still couldn't wrap my head around it. </p>
  
  <p>And why does GOROOT exist then? What's its purpose? </p>
  
  <p>Are there any automatic tools which detects if current directory is root folder of Go project (for example by some hidden file) and changes GOPATH to this directory automatically?</p>
  
  <p>Thank you, any advice really appriciated</p>
  
  <p>ps. For example I develop completely disjoint Go projects A, B and C, should they live in single "workspace" environment? I guess not, but what I should do with GOPATH and GOROOT then?</p>