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言語の構文Confusion
- 2. Go言語の副作用
- 3. Goプログラミング言語用PostgreSQLドライバ
- 4. チェック文字列のコンテンツの言語
- 5. C言語の文字列のFNVハッシュ
- 6. 空の文字列D言語でプログラミング
- 7. 文字列関数を使用してC言語のxmlを解析する
- 8. NetBeans IDEでGo言語を使用するには?
- 9. データベース列の文字列値の言語を検出する
- 10. Guyrati言語(他の言語)のiosの文字列から単一文字を取得する方法
- 11. Java文字列の代わりに英語以外の言語を使用する(例としてペルシア語)
- 12. アセンブリ言語で「分割」文字列
- 13. アセンブリ言語と文字列操作
- 14. 大文字と小文字を区別する言語と鈍感な言語
- 15. Go言語で配列をコピーする機能
- 16. PHPの文字列を他の言語に翻訳する
- 17. 文字列をC言語のコードに変換する方法#
- 18. 多言語の文字列をstrlenする方法
- 19. Go言語を使用してログに記録Simple HTTP Server
- 20. メモリ効率のよいC++文字列(インターン、ロープ、コピーオンライトなど)
- 21. Javaで日本語文字を含む文字列を宣言する
- 22. Goプログラミング言語では、変数の型を文字列として取得できますか?
- 23. アセンブリ言語を変更する入力文字列エラー
- 24. アセンブリ言語で文字列を入力する方法は?
- 25. Google API - 文字列をEN言語に翻訳する:(
- 26. 文字列からスクリプト言語を決定する
- 27. C言語でunicode文字列をエスケープする方法
- 28. HTML5文字セット文字エンコーディング宣言:スペイン語文字を使用する必要がありますか?
- 29. Regexを単一言語のトークンに分割する多言語の文字列を分割する
- 30. Goでの文字列の比較
「Javaでのようにコピーオンライト...」は意味がありません。オブジェクトはJavaでは値ではありません。参照のみがあります。参照を渡すと、NEVERはどのような状況でも指し示すオブジェクトのコピーを作成します。参照の受け渡しまたは割り当ては、常に元の参照と同じオブジェクトを参照します。明示的に何らかの方法でコピーしない限り、オブジェクトはコピーされません(「オン・ライト」ではありません)。 – newacct