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/$USER.q
. - Pretty colors!
import "q"
...
q.Q(a, b, c)
For best results, dedicate a terminal to tailing $TMPDIR/$USER.q
while you work.
git get github.com/bingoohuang/q@latest
Put these functions in your shell config. Typing qq
or rmqq
will then start
tailing $TMPDIR/$USER.q
.
qq() {
clear
logpath="$TMPDIR/$USER.q"
if [[ -z "$TMPDIR" ]]; then
logpath="/tmp/q"
fi
if [[ ! -f "$logpath" ]]; then
echo 'Q LOG' > "$logpath"
fi
tail -100f -- "$logpath"
}
rmqq() {
logpath="$TMPDIR/$USER.q"
if [[ -z "$TMPDIR" ]]; then
logpath="/tmp/q"
fi
if [[ -f "$logpath" ]]; then
rm "$logpath"
fi
qq
}
You also can simply tail -f $TMPDIR/$USER.q
, but it's highly recommended to use the above commands.
Python 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.