ホームページ  >  記事  >  バックエンド開発  >  Golang をゼロから学ぶ: ポインタの秘密を探る

Golang をゼロから学ぶ: ポインタの秘密を探る

WBOY
WBOYオリジナル
2024-02-28 18:33:04907ブラウズ

从零开始学习 Golang:探索指针的奥秘

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

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