Go言語はJavaのように文字列にコピーオンライトを使用しますか?つまり、文字列を値でメソッドに渡し、それを変更しない場合、これによりメモリが割り当てられ、文字列がコピーされます(これは時間効率が悪くなります)。または、単一のコピーを参照するだけです。
4866 次
2 に答える
21
文字列は不変であるため、コピーオンライトではありません。ただし、文字列を共有しても、基になるメモリ領域のコピーは作成されません。Goでは、文字列は(長さ、データ)のペアとして表されます。文字列を渡すと、Goは長さとポインタをコピーしますが、ポイントされたデータはコピーしません。
詳細については、golang-nutsに関するこの最近のスレッドを参照してください。
于 2011-12-16T10:18:54.370 に答える
2
Goタイプstring
は実質的にと同等java.lang.String
です。2つの実装(Goランタイム、JVM)も同様ですが、同一ではありません。関数とメソッドに引数を渡すという点では、Go文字列のパフォーマンスはJava文字列に似ています。
于 2011-12-16T13:35:26.280 に答える