Wenn Sie ein io.ReadCloser-Objekt haben, wie eines, das von einer http.Response erhalten wurde, wird das Ganze konvertiert Der Stream in einen String erfordert eine vollständige Kopie des Byte-Arrays. Auch wenn dies möglicherweise nicht der effizienteste Vorgang ist, ist es doch der standardmäßige und sichere Weg, diese Konvertierung zu erreichen.
Um die Konvertierung durchzuführen, können Sie die folgenden Schritte verwenden:
buf := new(bytes.Buffer) buf.ReadFrom(yourReader) s := buf.String() // Performs a complete copy of the bytes in the buffer.
Wenn Sie versuchen, ein Byte-Array direkt in einen String zu konvertieren, treten Typsicherheitsprobleme im Zusammenhang mit der Erstellung von Strings auf unveränderlich in Go. Durch die Verwendung des unsicheren Pakets können Sie diese Sicherheitsmechanismen jedoch umgehen. Seien Sie vorsichtig, wenn Sie mit dem unsicheren Paket arbeiten, da dies zu unvorhergesehenen Konsequenzen führen kann.
Hier ist ein Beispiel für die Verwendung des unsicheren Pakets:
buf := new(bytes.Buffer) buf.ReadFrom(yourReader) b := buf.Bytes() s := *(*string)(unsafe.Pointer(&b))
Obwohl diese Methode effizienter erscheinen mag, hat sie ihre Nachteile:
Daher wird generell empfohlen, sich an den standardmäßigen und sicheren Ansatz zu halten, die Bytes in einen Puffer zu kopieren und dann in einen String zu konvertieren. Wenn die Zeichenfolgengröße für diesen Ansatz zu groß wird, kann es sich lohnen, alternative Methoden wie Streaming oder inkrementelle Verarbeitung in Betracht zu ziehen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3