ホームページ  >  記事  >  バックエンド開発  >  golangポインタの使い方

golangポインタの使い方

WBOY
WBOYオリジナル
2023-05-19 09:02:36916ブラウズ

Golang は、効率性、シンプルさ、セキュリティなどの特徴を備えたオープンソースのプログラミング言語であるため、Web 開発、クラウド コンピューティング、ネットワーク プログラミング、オペレーティング システムなどの分野で広く使用されています。 Golang ではポインタは非常に重要な概念であり、開発者が Golang ポインタの使い方を習得することは非常に重要です。

1. ポインターの定義と宣言

Golang では、ポインターは別の変数のアドレスを格納するために使用される変数です。ポインタは変数自体の値ではなく変数のアドレスを格納するため、ポインタ変数の値はアドレスである必要があります。ポインタにも独自の型があり、その型はそれが指す変数の型によって異なります。 Golang では、ポインター変数を定義および宣言する方法は次のとおりです。

var ptr *int             // 定义一个指向整型的指针变量
var ptr1 *string         // 定义一个指向字符串的指针变量

ポインター変数の命名規則は他の変数と同じで、文字またはアンダースコアで始まり、文字、数字、そしてアンダースコア。

2. & および * 演算子

Golang では、& および 演算子はポインター操作の中核です。 & 演算子は変数のアドレスを取得するために使用され、 演算子はポインター変数が指す変数の値を取得するために使用されます。次のコードは、& 演算子と * 演算子の使用方法を示しています。

var num int = 10          // 定义一个整型变量
var ptr *int               // 定义一个指向整型的指针变量
ptr = &num               // 将num的地址赋值给ptr
fmt.Println("num的值:", num)            // 输出:10
fmt.Println("ptr的值:", ptr)            // 输出:0xc042036018
fmt.Println("ptr指向的值:", *ptr)      // 输出:10

最初に整数変数 num を定義し、次に整数を指すポインタ変数 ptr を定義します。 & 演算子を使用して num のアドレスを取得し、それを ptr 変数に割り当てます。最後に、* 演算子を使用して、ptr が指す変数の値を取得します。

3. nil ポインター

Golang では、ポインター変数が初期化されていない場合、その値は nil に設定され、無効なアドレスを指していることを示します。以下は、nil ポインターを使用する簡単な例です。

var ptr *int          // 定义一个指向整型的指针变量
if ptr == nil {
   fmt.Println("ptr是一个空指针")
}

このコード例では、整数を指すポインター変数 ptr を定義します。メモリアドレスが割り当てられていないため、自動的に nil に設定されます。 if文ではptrが空かどうかでポインタ変数が初期化されているかどうかを確認しています。

4. 関数パラメータとしてのポインタ

Golang では、関数パラメータを渡すためにポインタを使用できます。こうすることで、元の変数の値を単にコピーするのではなく、関数内で変更できます。以下は、関数パラメーターとしてポインターを使用する例です。

func main() {
   var num int = 10
   fmt.Println("调用函数前 num 的值:", num)    // 输出:10
   changeNum(&num)
   fmt.Println("调用函数后 num 的值:", num)    // 输出:20
}

func changeNum(p *int) {
   *p = 20
}

この例では、整数のポインター パラメーター p を持つ、changeNum という名前の関数を定義します。 main関数では、整変数numを定義し、そのアドレスをchangeNum関数に渡します。 changeNum 関数では、p ポインターを使用して元の num 変数の値を変更します。

5. 新しい関数

Golang では、新しい関数を使用して、ヒープ上のポインター変数にメモリ領域を割り当てることができます。新しい関数は、新しく割り当てられたメモリへのポインタを返します。以下は、新しい関数の使用例です。

ptr := new(int)            // 为整型指针变量分配内存空间
*ptr = 10                // 给它指向的整数变量赋值
fmt.Println("ptr的值:", ptr)          // 输出:0xc042036030
fmt.Println("ptr指向的值:", *ptr)    // 输出:10

この例では、新しい関数を使用して、整数ポインタ変数 ptr にメモリ領域を割り当てます。次に、それを操作し、それが指す整変数に値を代入し、その値を出力します。

要約すると、ポインタは Golang において非常に重要な概念であり、システム プログラミングやデータ構造で広く使用されています。 Golang ポインタの使い方をマスターすると、開発者は Golang の動作メカニズムをより深く理解し、Golang プログラムをより効率的に作成できます。

以上がgolangポインタの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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