I still think you could save a lot of code if you redefined Target as

type Target struct {
	url     string
	method string
	headers http.Header
	body    []byte
}

and built your request here:

	req:=http.NewRequest(t.method,t.url,bytes.NewReader(t.body)
	// copy headers to req
        r, err := a.client.Do(req)

Feels like you are trying to optimise before profiling and putting to0 much effort into managing the scope and lifetime of the request outside of this goroutine.