Godeps/_workspace/src/gopkg.in/mgo.v2/bson/bson.go
func Marshal(in interface{}) (out []byte, err error) {
	defer handleErr(&err)
	e := &encoder{make([]byte, 0, initialBufferSize)}
	e.addDoc(reflect.ValueOf(in))
	return e.out, nil
}
func Marshal(in interface{}) (out []byte, err error) {
	defer handleErr(&err)
	e := &encoder{make([]byte, 0, initialBufferSize)}
	e.addDoc(reflect.ValueOf(in))
	return e.out, nil
}
func Marshal ( in interface { } ) ( out [ ] byte , err error ) { defer handleErr ( & err ) e := & encoder { make ( [ ] byte , 0 , initialBufferSize ) } e . addDoc ( reflect . ValueOf ( in ) ) return e . out , nil }
// Marshal serializes the in value, which may be a map or a struct value.
// In the case of struct values, only exported fields will be serialized.
// The lowercased field name is used as the key for each exported field,
// but this behavior may be changed using the respective field tag.
// The tag may also contain flags to tweak the marshalling behavior for
// the field. The tag formats accepted are:
//
//     "[<key>][,<flag1>[,<flag2>]]"
//
//     `(...) bson:"[<key>][,<flag1>[,<flag2>]]" (...)`
//
// The following flags are currently supported:
//
//     omitempty  Only include the field if it's not set to the zero
//                value for the type or to empty slices or maps.
//
//     minsize    Marshal an int64 value as an int32, if that's feasible
//                while preserving the numeric value.
//
//     inline     Inline the field, which must be a struct or a map,
//                causing all of its fields or keys to be processed as if
//                they were part of the outer struct. For maps, keys must
//                not conflict with the bson keys of other struct fields.
//
// Some examples:
//
//     type T struct {
//         A bool
//         B int    "myb"
//         C string "myc,omitempty"
//         D string `bson:",omitempty" json:"jsonkey"`
//         E int64  ",minsize"
//         F int64  "myf,omitempty,minsize"
//     }
//
Marshal serializes the in value which may be a map or a struct value . In the case of struct values only exported fields will be serialized . The lowercased field name is used as the key for each exported field but this behavior may be changed using the respective field tag . The tag may also contain flags to tweak the marshalling behavior for the field . The tag formats accepted are : [ <key > ] [ <flag1 > [ <flag2 > ]] ( ... ) bson : [ <key > ] [ <flag1 > [ <flag2 > ]] ( ... ) The following flags are currently supported : omitempty Only include the field if it s not set to the zero value for the type or to empty slices or maps . minsize Marshal an int64 value as an int32 if that s feasible while preserving the numeric value . inline Inline the field which must be a struct or a map causing all of its fields or keys to be processed as if they were part of the outer struct . For maps keys must not conflict with the bson keys of other struct fields . Some examples : type T struct { A bool B int myb C string myc omitempty D string bson : omitempty json : jsonkey E int64 minsize F int64 myf omitempty minsize }