Go で io.Reader を String に変換する
ここでの課題は、http から取得した io.ReadCloser オブジェクトを効率的に変換する方法です。文字列への応答。通常、このような変換にはバイト配列の完全なコピーが含まれるため、非効率になります。
非効率的な解決策
従来の方法では、bytes.Buffer を使用します。 io.Reader から読み取り、内容を文字列に変換します。ただし、このアプローチではデータの完全なコピーが発生します。
buf := new(bytes.Buffer) buf.ReadFrom(yourReader) s := buf.String() // Performs a complete byte array copy
Unsafe Method
別のアプローチでは、型安全性を回避する unsafe パッケージの使用が含まれます。メカニズム。この方法では効率的な変換が可能ですが、安全性が低下し、潜在的なエラーが発生します。
buf := new(bytes.Buffer) buf.ReadFrom(yourReader) b := buf.Bytes() s := *(*string)(unsafe.Pointer(&b))
安全でない方法の警告
安全ではないことに注意することが重要です。このメソッドにはいくつかの注意事項があります:
推奨される解決策
にもかかわらず安全でない方法が利用できる場合は、安全性と信頼性が向上する標準的なアプローチに従うことをお勧めします。完全なコピーはそれほどコストがかからず、ほとんどの状況ではより賢明な選択です。
以上がGo で io.ReadCloser を文字列に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。