package bencode

type Bytes []byte

var (
	_ Unmarshaler = &Bytes{}
	_ Marshaler   = &Bytes{}
	_ Marshaler   = Bytes{}
)

func (me *Bytes) UnmarshalBencode(b []byte) error {
	*me = append([]byte(nil), b...)
	return nil
}

func (me Bytes) MarshalBencode() ([]byte, error) {
	return me, nil
}

package bencode

type Bytes []byte

var (
	_ Unmarshaler = &Bytes{}
	_ Marshaler   = &Bytes{}
)

func (me *Bytes) UnmarshalBencode(b []byte) error {
	*me = append([]byte(nil), b...)
	return nil
}

func (me *Bytes) MarshalBencode() ([]byte, error) {
	return *me, nil
}

--- 
+++ 
@@ -5,6 +5,7 @@
 var (
 	_ Unmarshaler = &Bytes{}
 	_ Marshaler   = &Bytes{}
+	_ Marshaler   = Bytes{}
 )
 
 func (me *Bytes) UnmarshalBencode(b []byte) error {
@@ -12,6 +13,6 @@
 	return nil
 }
 
-func (me *Bytes) MarshalBencode() ([]byte, error) {
-	return *me, nil
+func (me Bytes) MarshalBencode() ([]byte, error) {
+	return me, nil
 }
Make bencode.Bytes work with pointer and nonpointer receivers
