Go では、ポインターは別の変数のアドレスを格納する変数です。 * 演算子を使用して変数を逆参照することで、参照先の変数の値に間接的にアクセスできます。
ただし、ポインターを使用する場合、nil ポインターを逆参照しようとすると問題が発生する可能性があります。これは、有効なメモリ位置を指すように nil ポインタが割り当てられていないためです。
次のコードを考えてみましょう:
package main import ( "fmt" "reflect" ) func main() { var guess *int fmt.Println(reflect.TypeOf(guess)) *guess = 12345 fmt.Println(guess) }
このコードは、*guess ポインタの値を設定しようとします。ただし、これにより、不正なメモリ アドレスまたは nil ポインタ逆参照が原因で実行時パニックが発生します。
このエラーの理由は、推測ポインタがデフォルトで nil であるためです。 nil ポインターを逆参照しようとすると、プログラムがクラッシュします。
この問題を解決するには、まずポインターを有効なメモリ位置に割り当てる必要があります。組み込みの new() 関数を使用して、新しい int 変数を作成し、そのアドレスを推測ポインターに割り当てることができます。
var guess *int guess = new(int) *guess = 12345
これで、推測ポインターは有効な int 変数を指すようになり、安全に逆参照できるようになります。
ポインターに値を割り当てるもう 1 つの方法は、& 演算子を使用して既存のアドレスを取得することです。変数:
value := 12345 guess := &value
ここで、推測ポインタは値変数を指すようになりました。推測ポインタを通じて指定された値に加えられた変更は、元の値変数にも影響します。
nil ポインタの概念と、それらを有効なメモリ位置に割り当てる方法を理解することで、Go でポインタを効果的に使用できるようになります。データに間接的にアクセスして操作するプログラム。
以上がGo で Int ポインタを Int 値に安全に設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。