Dans l'interface io de Golang, il existe une fonction unique appelée NopCloser. Il est conçu pour fournir une méthode Close non fonctionnelle dans les cas où un io.ReadCloser sans opération de fermeture est requis.
Selon la documentation :
NopCloser renvoie un ReadCloser avec un no-op Méthode Close encapsulant le Reader r fourni.
Pour fournir plus de contexte, chaque fois que vous rencontrez un scénario dans lequel vous devez renvoyer un io.ReadCloser tout en garantissant la disponibilité d'une méthode Close(), NopCloser est une solution pratique . Il vous permet de construire un ReadCloser sans la fonctionnalité de fermeture réelle.
Voici un exemple de la façon dont NopCloser peut être utilisé :
import ( "bytes" "io" "io/ioutil" ) // 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 } // ... continue with other cases } }
Dans cet exemple, NopCloser est utilisé pour envelopper un octet. Buffer et renvoyez-le sous forme de io.ReadCloser. Bien que bytes.Buffer n'ait pas de méthode Close() par défaut, le io.ReadCloser renvoyé en fournira une sans aucune action de fermeture réelle.
Comprendre comment exploiter efficacement NopCloser vous permet de répondre à des scénarios spécifiques et de construire des ReadClosers avec un comportement de fermeture personnalisé dans les applications Go.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!