问题
Does anyone have a good or any explanation of Golang's NopCloser function?
I looked around but failed to find anything besides Golang's main doc's explanation of:
NopCloser returns a ReadCloser with a no-op Close method wrapping the provided Reader r.
Any pointers or explanation would be appreciated. Thanks.
回答1:
Whenever you need to return an io.ReadCloser, while making sure a Close()
is available, you can use a NopCloser
to build such a ReaderCloser.
You can see one example in this fork of gorest, in 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
}
回答2:
It's used for functions that require io.ReadCloser
but your current object (for example a bytes.Buffer
) doesn't provide a Close function.
来源:https://stackoverflow.com/questions/28158990/golang-io-ioutil-nopcloser