improve go generate