Go での印刷バイト バッファーの異なる動作
Go では、バイトを印刷します。バッファー値は、それがバッファー値であるかどうかに応じて、異なる出力を生成します。ポインタまたは通常の値。
bytes.Buffer を作成するときnew(bytes.Buffer) では、バッファへのポインタを取得します。値の String() メソッドにアクセスして出力すると、次のようにバッファーの内容が出力されます。Hello World.
ただし、var buf bytes.Buffer を使用すると、bytes.Buffer 型の値が直接作成されます。この値には String() メソッドがないため、デフォルトの形式が出力されます。これにより、詳細な出力が生成されます: {[72 101 108 108 111 32 119 111 114 108 100] 0 [72 101 108 108 111 32 119 111 114 108 100 0 0 0 0 0 0 0 0 0 0] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] 0}.
この違いは、Go が String() メソッドをチェックするために発生します。値を印刷するとき。存在する場合、メソッドが呼び出され、値の表現が取得されます。 *bytes.Buffer などのポインター値の場合は String() メソッドを使用できますが、bytes.Buffer のような通常の値の場合は使用できません。
ポインターとは対照的に、通常の値のデフォルト形式は異なります。印刷時: {field0 field1 ...}、フィールドを表示します。これは、バイトを印刷するときに観察されるさまざまな出力について説明しています。バッファ値は、ポインタか通常の値かに応じて異なります。
以上がGo で「bytes.Buffer」を出力すると、それがポインタか値かによって異なる結果が生成されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。