Golang io/ioutil NopCloser

六月ゝ 毕业季﹏ 提交于 2019-11-29 11:21:38

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!