ホームページ >バックエンド開発 >Golang >Go で Int ポインタを Int 値に安全に設定する方法

Go で Int ポインタを Int 値に安全に設定する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-08 12:15:11603ブラウズ

How to Safely Set an Int Pointer to an Int Value in Go?

Go で Int ポインターを Int 値に設定する

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。