定数のアドレスを決定しようとすると、「」のようなエラーが発生する場合があります。定数のアドレスを取得できません。」これは、Go がアドレス演算子に制限を課し、オペランドとして定数を使用することを禁止しているために発生します。
Go の仕様では、アドレス指定可能なエンティティには変数、ポインター間接指定、スライス インデックス操作、アドレス指定可能な構造体のフィールド セレクター、配列が含まれると規定されています。アドレス指定可能な配列および複合リテラルのインデックス操作。ただし、このリストには定数がまったく含まれていません。
この制限は、次の 2 つの基本的な理由から生じています:
この制限を回避するには、アドレス指定可能な変数に定数値を代入し、代わりに変数のアドレスを取得します。 。例:
package main func main() { const k = 5 v := k address := &v // This approach is allowed }
ただし、Go の数値定数は任意の精度を持ち、特定の型で表現できる最大値を超える可能性があることを考慮してください。定数を変数に代入すると、特に浮動小数点定数の場合、精度が低下する可能性があります。
以上がGo で定数のアドレスを取得できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。