Golang をゼロから学ぶ: ポインターの謎を探る
プログラミング言語を学習する過程において、ポインターは非常に重要ですが、見落とされがちな概念です。 Go 言語では、ポインタは非常に便利なデータ型でもあり、メモリの効果的な管理、データ転送、プログラムのパフォーマンスと効率の向上を実現します。この記事ではゼロから始めて、具体的なコード例を通して Go 言語のポインターの謎を段階的に探っていきます。
Go 言語では、ポインターは変数のメモリ アドレスを格納するデータ型です。ポインタを使用すると、変数自体を操作するのではなく、変数が配置されているメモリ空間を直接操作できます。ポインタは &
演算子を使用して変数のアドレスを取得し、*
演算子はポインタが指す変数にアクセスするために使用します。
Go 言語では、*
を使用してポインター変数を宣言できます。たとえば、次のようになります。
package main import "fmt" func main() { var num int = 10 var ptr *int ptr = &num fmt.Println("num 的值是:", num) fmt.Println("ptr 的值是:", ptr) fmt.Println("ptr 指向的值是:", *ptr) }
上記のコードでは、整数変数 num
と整数ポインタ変数 ptr
を宣言し、&
演算子を通じて num
変数のアドレスを取得しました。ポインタ変数 ptr
に値を代入します。最後に、*ptr
を介してポインターが指す変数にアクセスします。
Go 言語では、関数のパラメータとしてポインタを渡すと、コピーを変更するのではなく、元の変数を直接変更できます。サンプル コードは次のとおりです。
package main import "fmt" func changeValue(ptr *int) { *ptr = 20 } func main() { var num int = 10 fmt.Println("修改前的值是:", num) changeValue(&num) fmt.Println("修改后的值是:", num) }
上記のコードでは、整数ポインタをパラメータとして受け取り、そのポインタを介して元の変数の値を変更する changeValue
関数を定義します。 。 main
関数で changeValue
関数を呼び出すと、num
変数の値を直接変更できます。
ポインター配列はポインター要素を格納する配列であり、ポインターの配列は配列の最初の要素を指すポインターです。コード例は次のとおりです。
package main import "fmt" func main() { var num1, num2, num3 int = 1, 2, 3 var ptrArray [3]*int ptrArray[0] = &num1 ptrArray[1] = &num2 ptrArray[2] = &num3 fmt.Println("num1: ", *ptrArray[0]) fmt.Println("num2: ", *ptrArray[1]) fmt.Println("num3: ", *ptrArray[2]) }
上記のコードでは、3 つの整変数とポインター配列 ptrArray
を定義し、これら 3 つの変数のアドレスを配列に格納します。ポインタ配列をトラバースすることで、各変数の値を取得できます。
上記のコード例を通じて、Go 言語におけるポインターの基本概念と使用法を暫定的に理解しました。ポインターには複雑な概念がいくつかありますが、実際のプログラミングでは非常に便利なツールであり、プログラムの効率とパフォーマンスを向上させることができます。この記事の紹介を通じて、読者がポインターを理解し、Go 言語プログラミングでポインターの概念をより適切に使用できるようになることを願っています。
以上がGolang をゼロから学ぶ: ポインタの秘密を探るの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。