Всякий раз, когда вам нужно вернуть io.ReadCloser
, удостоверяясь, что у вас есть Close()
, вы можете использовать NopCloser
для создания такого ReaderCloser.
Вы можете увидеть один пример в этом fork of gorest, в util.go
//Marshals the data in interface i into a byte slice, using the Marhaller/Unmarshaller specified in mime.
//The Marhaller/Unmarshaller must have been registered before using gorest.RegisterMarshaller
func InterfaceToBytes(i interface{}, mime string) (io.ReadCloser, error) {
v := reflect.ValueOf(i)
if v.Kind() == reflect.Ptr {
v = v.Elem()
}
switch v.Kind() {
case reflect.Bool:
x := v.Bool()
if x {
return ioutil.NopCloser(bytes.NewBuffer([]byte("true"))), nil
}
ioutil.NopCloser только обертывания io.Reader. Вы можете создать свой собственный эквивалент для создания io.WriteCloser – krait
@Krait, хороший улов. – OneOfOne