Go での文字列リテラルのアドレスの取得: 制限と解決策について
Go では、文字列リテラルは、文字列テーブルに格納されている不変の値です。プログラム。提供されたコードの test1() 関数に見られるように、文字列リテラルのアドレスを取得しようとすると、コンパイル エラーが発生します。これは、リテラルのアドレスを取得すると、固有のあいまいさが生じるためです。
Go のコンパイラは、リテラルをアドレス指定するときにジレンマに直面します。安全でない可能性のある変更を許容してリテラル自体のアドレスを返すか、それとも、リテラルでアドレスを新しいオブジェクトに返しますか?このあいまいさは、リテラルのアドレスの取得を明示的に禁止する言語仕様によって解決されます。
代替解決策
この制限を回避するには、保持する変数の使用を検討してください。 test2() 関数に示されている文字列値。この場合、アドレス演算子は問題なく変数に適用できます。ただし、文字列が定数として定義されている場合、このアプローチは機能しません。
もう 1 つのオプションは、リテラルをアドレス指定しないという一般規則に対する法的な例外である複合リテラルを利用することです。複合リテラルは、その場で作成される一時オブジェクトであり、提供された仕様例で示されているように、その内容のアドレスを取得できます。
重要なポイント
取得中文字列リテラルのアドレスはあいまいなセマンティクスのため不可能です。変数または複合リテラルを使用すると、文字列値のアドレスを取得するための実行可能な代替手段が提供されます。行きましょう
以上がGo で文字列のアドレスを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。