Go言語を使用するJavaのように文字列のコピーオンライトを使用しますか?私。文字列をメソッドに渡して決して変更しないと、これはメモリを割り当てて文字列をコピーします(時間が非効率的です)。それは単なるコピーを参照するだけです。Go言語を使用する文字列のコピーオンライト
2
A
答えて
16
文字列が不変であるため、コピーオンライトではありません。しかし、文字列を共有しても、下にあるメモリ領域のコピーは作成されません。 Goでは、文字列は(長さ、データ)のペアとして表されます。文字列を渡すと、Goは長さとポインタをコピーしますが、指されたデータはコピーしません。
詳細については、this recent thread on golang-nutsを参照してください。
2
Goタイプstring
は、実質的にjava.lang.String
に相当します。 2つの実装(Go実行時、JVM)も同様ですが、同一ではありません。引数を関数とメソッドに渡すという点で、Go文字列のパフォーマンスはJava文字列と似ています。
関連する問題
- 1. 文字列をgo言語のintに変換する
- 2. strings.Join()メソッドで使用する文字配列として文字列にアクセスします。GO言語
- 3. Go言語の構文Confusion
- 4. Go言語の副作用
- 5. Goプログラミング言語用PostgreSQLドライバ
- 6. Go言語の順列を作成
- 7. Go言語の構造体の配列
- 8. 文字列内にアルファベット文字(多言語)のみを残す
- 9. ポインタを使用して文字列を2つの文字列に分割する方法は? C言語
- 10. C言語の文字列のFNVハッシュ
- 11. チェック文字列のコンテンツの言語
- 12. 文字列関数を使用してC言語のxmlを解析する
- 13. C言語を使って文字列内の単語を置換するプログラム
- 14. NetBeans IDEでGo言語を使用するには?
- 15. Go言語で内部構造を使用するC
- 16. Android文字列リソースの多言語
- 17. Androidの変更文字列言語
- 18. 空の文字列D言語でプログラミング
- 19. データベース列の文字列値の言語を検出する
- 20. 逐語文字列でエスケープ文字を使用するには?
- 21. Guyrati言語(他の言語)のiosの文字列から単一文字を取得する方法
- 22. すべての言語の文字列を使用したテスト文字列の検索
- 23. GO言語のラムダ式
- 24. Java文字列の代わりに英語以外の言語を使用する(例としてペルシア語)
- 25. 大文字と小文字を区別する言語と鈍感な言語
- 26. アセンブリ言語で「分割」文字列
- 27. アセンブリ言語と文字列操作
- 28. メモリ効率のよいC++文字列(インターン、ロープ、コピーオンライトなど)
- 29. 異なる言語の文字列を比較する
- 30. PHPの文字列を他の言語に翻訳する
「Javaでのようにコピーオンライト...」は意味がありません。オブジェクトはJavaでは値ではありません。参照のみがあります。参照を渡すと、NEVERはどのような状況でも指し示すオブジェクトのコピーを作成します。参照の受け渡しまたは割り当ては、常に元の参照と同じオブジェクトを参照します。明示的に何らかの方法でコピーしない限り、オブジェクトはコピーされません(「オン・ライト」ではありません)。 – newacct