io.Reader を文字列に効率的に変換する
問題:
io.ReadCloser を検討してくださいhttp.Response から取得されたオブジェクト。ストリーム全体を文字列に効率的に変換するにはどうすればよいですか?
解決策:
Strings.Builder の使用 (Go 1.10 以降の場合):
これは Go 1.10 および Go 1.10 で推奨され、最も効率的な方法です。上:
import "strings" func ioReaderToString(r io.ReadCloser) (string, error) { buf := new(strings.Builder) if _, err := io.Copy(buf, r); err != nil { return "", err } return buf.String(), nil }
従来のメソッド (Go
[注: このソリューションは古いため、推奨されません。 Strings.Builder.]
import "bytes" buf := new(bytes.Buffer) if _, err := buf.ReadFrom(r); err != nil { return "", err }
s := buf.String()
安全でない方法 (高度な方法とRisky):
[細心の注意を払って使用してください]
import "bytes" buf := new(bytes.Buffer) if _, err := buf.ReadFrom(r); err != nil { return "", err }
b := buf.Bytes()
import "unsafe" s := *(*string)(unsafe.Pointer(&b))
安全でないという警告メソッド:
推奨事項:
Strings.Builder を使い続けるこの方法は効率的で安全であり、安全でない方法の落とし穴を回避できるためです。
以上がGo で io.Reader を文字列に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。