25 lines
547 B
Go
25 lines
547 B
Go
package boolean
|
|
|
|
import (
|
|
"reflect"
|
|
)
|
|
|
|
func Marshal(value interface{}) ([]byte, error) {
|
|
switch v := value.(type) {
|
|
case nil:
|
|
return nil, nil
|
|
case bool:
|
|
return EncBool(v)
|
|
case *bool:
|
|
return EncBoolR(v)
|
|
default:
|
|
// Custom types (type MyBool bool) can be serialized only via `reflect` package.
|
|
// Later, when generic-based serialization is introduced we can do that via generics.
|
|
rv := reflect.TypeOf(value)
|
|
if rv.Kind() != reflect.Ptr {
|
|
return EncReflect(reflect.ValueOf(v))
|
|
}
|
|
return EncReflectR(reflect.ValueOf(v))
|
|
}
|
|
}
|