<pre class="notranslate">I often need to see what's really going on in a specific function, so I drop a quick
`fmt.Println` in the code to output the data I want to investigate.

This has 2 disadvantages:

1) I always need to jump to the header and import "fmt" and remove it when the
log is removed
2) If I need more context information, I also have to import "runtime" to get
a call stack trace

I propose a built in function

    trace(args...interface{})

and/or

    tracef(format string, args...interface{})

that does this without requiring fmt or runtime. The output would look like the `panic`
stack trace with the custom information attached.</pre>
<p dir="auto">Setting up a workspace/GOPATH is one of the big hurdles for new Go users. And maintaining (switching between) several workspaces is a common work flow for some Go developers.</p>
<p dir="auto">This proposal is to make the GOPATH environment variable optional, and to have the go tool detect the GOPATH root on invocation. It would to this by walking up the tree from the cwd to find a directory named <code class="notranslate">src</code>, and setting <code class="notranslate">GOPATH</code> to the parent of that directory.</p>
<p dir="auto">For new users, the getting started experience is something like:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="mkdir -p src/github.com/user/hello
cd src/github.com/user/hello
vim hello.go
go install
hello"><pre class="notranslate"><code class="notranslate">mkdir -p src/github.com/user/hello
cd src/github.com/user/hello
vim hello.go
go install
hello
</code></pre></div>
<p dir="auto">or to install something else:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="mkdir src
cd src
go get github.com/docker/docker"><pre class="notranslate"><code class="notranslate">mkdir src
cd src
go get github.com/docker/docker
</code></pre></div>
<p dir="auto">Thoughts?</p>