Probably want to pass pointers instead hit(tgt *Target) (res *Result) and save some copying