diff --git a/go/aead/aead_factory.go b/go/aead/aead_factory.go
index 7bf30e96c2c9cb77239c4c9e4e204fdeeed0b29c..617ddcfa3e006de308852a3f4dcdd0b745c0b4d1 100644
--- a/go/aead/aead_factory.go
+++ b/go/aead/aead_factory.go
@@ -62,7 +62,7 @@ func (a *primitiveSet) Encrypt(pt, ad []byte) ([]byte, error) {
 	if err != nil {
 		return nil, err
 	}
-	var ret []byte
+	ret := make([]byte, 0, len(primary.Prefix) + len(ct))
 	ret = append(ret, primary.Prefix...)
 	ret = append(ret, ct...)
 	return ret, nil
diff --git a/go/daead/daead_factory.go b/go/daead/daead_factory.go
index 9fefd7a6f78774640e54934ff0434cb27effec84..b5598cf71c0ce4d277a83e0c9addaec953e28eaf 100644
--- a/go/daead/daead_factory.go
+++ b/go/daead/daead_factory.go
@@ -59,7 +59,7 @@ func (d *primitiveSet) EncryptDeterministically(pt, aad []byte) ([]byte, error)
 		return nil, err
 	}
 
-	var ret []byte
+	ret := make([]byte, 0, len(primary.Prefix) + len(ct))
 	ret = append(ret, primary.Prefix...)
 	ret = append(ret, ct...)
 	return ret, nil
diff --git a/go/hybrid/hybrid_encrypt_factory.go b/go/hybrid/hybrid_encrypt_factory.go
index daf72c066c21b0386738d338cd0ba8c997f10b74..674dc32e5615612792757496c08bcc9a9fec5d96 100644
--- a/go/hybrid/hybrid_encrypt_factory.go
+++ b/go/hybrid/hybrid_encrypt_factory.go
@@ -60,7 +60,7 @@ func (a *encryptPrimitiveSet) Encrypt(pt, ad []byte) ([]byte, error) {
 	if err != nil {
 		return nil, err
 	}
-	var ret []byte
+	ret := make([]byte, 0, len(primary.Prefix) + len(ct))
 	ret = append(ret, primary.Prefix...)
 	ret = append(ret, ct...)
 	return ret, nil
diff --git a/go/mac/mac_factory.go b/go/mac/mac_factory.go
index 5285b040535b5c94fcf280a795ff3e81b77dca2d..768a3d2acc7cb99b11b4fea3600a8a4ec0eb93bd 100644
--- a/go/mac/mac_factory.go
+++ b/go/mac/mac_factory.go
@@ -62,7 +62,7 @@ func (m *primitiveSet) ComputeMAC(data []byte) ([]byte, error) {
 	if err != nil {
 		return nil, err
 	}
-	var ret []byte
+	ret := make([]byte, 0, len(primary.Prefix) + len(mac))
 	ret = append(ret, primary.Prefix...)
 	ret = append(ret, mac...)
 	return ret, nil
diff --git a/go/signature/signer_factory.go b/go/signature/signer_factory.go
index 04a4de1068ad375878da6979eb090c3d4d3e95c6..ef1c36603b8f9120672c514562c9305f272d2b14 100644
--- a/go/signature/signer_factory.go
+++ b/go/signature/signer_factory.go
@@ -69,7 +69,7 @@ func (s *signerSet) Sign(data []byte) ([]byte, error) {
 	if err != nil {
 		return nil, err
 	}
-	var ret []byte
+	ret := make([]byte, 0, len(primary.Prefix) + len(signature))
 	ret = append(ret, primary.Prefix...)
 	ret = append(ret, signature...)
 	return ret, nil
diff --git a/go/subtle/aead/aes_gcm.go b/go/subtle/aead/aes_gcm.go
index 18b43dc5682cb0d0265e263b6272b2b90a9db168..19d7cf6a56b33452eb728a985ba5d168b057fe0c 100644
--- a/go/subtle/aead/aes_gcm.go
+++ b/go/subtle/aead/aes_gcm.go
@@ -67,7 +67,7 @@ func (a *AESGCM) Encrypt(pt, aad []byte) ([]byte, error) {
 	}
 	iv := a.newIV()
 	ct := cipher.Seal(nil, iv, pt, aad)
-	var ret []byte
+	ret := make([]byte, 0, len(iv) + len(ct))
 	ret = append(ret, iv...)
 	ret = append(ret, ct...)
 	return ret, nil
diff --git a/go/subtle/aead/chacha20poly1305.go b/go/subtle/aead/chacha20poly1305.go
index 7ea0f18277304e0e0877b97dcfd89d541250027e..fc0e534414f9b5c96ec4d79290b6584184dae4cd 100644
--- a/go/subtle/aead/chacha20poly1305.go
+++ b/go/subtle/aead/chacha20poly1305.go
@@ -52,7 +52,7 @@ func (ca *ChaCha20Poly1305) Encrypt(pt []byte, aad []byte) ([]byte, error) {
 
 	n := ca.newNonce()
 	ct := c.Seal(nil, n, pt, aad)
-	var ret []byte
+	ret := make([]byte, 0, len(n) + len(ct))
 	ret = append(ret, n...)
 	ret = append(ret, ct...)
 	return ret, nil