q is a better way to do print statement debugging.
Type q.Q instead of fmt.Printf and your variables will be printed like this:
- Faster to type
- Pretty-printed vars and expressions
- Easier to see inside structs
- Doesn't go to noisy-ass stdout. It goes to
$TMPDIR/q. - Pretty colors!
import "q"
...
q.Q(a, b, c)For best results, dedicate a terminal to tailing $TMPDIR/q while you work.
git clone https://github.com/ryboe/q "$(go env GOPATH)"/src/qPut these functions in your shell config. Typing qq or rmqq will then start
tailing $TMPDIR/q.
qq() {
clear
logpath="$TMPDIR/q"
if [[ -z "$TMPDIR" ]]; then
logpath="/tmp/q"
fi
if [[ ! -f "$logpath" ]]; then
echo 'Q LOG' > "$logpath"
fi
tail -100f -- "$logpath"
}
rmqq() {
logpath="$TMPDIR/q"
if [[ -z "$TMPDIR" ]]; then
logpath="/tmp/q"
fi
if [[ -f "$logpath" ]]; then
rm "$logpath"
fi
qq
}You also can simply tail -f $TMPDIR/q, but it's highly recommended to use the above commands.
Preferences > User Snippets > Go
"qq": {
"prefix": "qq",
"body": "q.Q($1) // DEBUG",
"description": "Pretty-print to $TMPDIR/q"
}Tools > Developer > New Snippet
<snippet>
<content><![CDATA[
q.Q($1) // DEBUG
]]></content>
<tabTrigger>qq</tabTrigger>
<scope>source.go</scope>
</snippet>Atom > Open Your Snippets
'.source.go':
'qq':
'prefix': 'qq'
'body': 'q.Q($1) // DEBUG'Settings > Editor > Live Templates
In Go, add a new template with:
- Abbreviation:
qq - Description:
Pretty-print to $TMPDIR/q - Template text:
q.Q($END$) // DEBUG - Applicable in: select the
Goscope
Add a new snippet file to the go-mode snippets directory
($HOME/.emacs.d/snippets/go-mode/qq). This should
contain:
# -*- mode: snippet -*-
# name: qq
# key: qq
# --
q.Q(${1:...}) // DEBUGFor SirVer/ultisnips, use :UltiSnipsEdit to add the new snippet:
snippet qq "qq"
q.Q(${1:})
${2}
endsnippetPython programmers will recognize this as a Golang port of the
q module by zestyping.
Ping does a great job of explaining q in his awesome lightning talk from
PyCon 2013. Watch it! It's funny :)
It's quick to type and unlikely to cause naming collisions.
Yes.