ホームページ > バックエンド開発 > Golang > Go 言語にはポインタがありますか?

Go 言語にはポインタがありますか?

藏色散人
リリース: 2023-02-17 14:45:18
オリジナル
3928 人が閲覧しました

Go 言語にはポインターがあります。Go 言語でポインターを使用すると、いくつかのタスクを簡単に実行できます。ポインター形式の宣言構文は「var var_name *var-type」で、パラメーター「var-type」はポインターです。 「var_name」はポインター変数の名前であり、変数がポインターとして使用されることを指定するために * 記号が使用されます。

Go 言語にはポインタがありますか?

この記事のデモ環境: Windows 7 システム、Go1.11.2 バージョン、Dell G3 コンピューター。

Go 言語にはポインタがあります。

Go 言語でポインターを使用すると、一部のタスクの実行が容易になります。

変数は、コンピューターのメモリ アドレスを参照するために使用される便利なプレースホルダーであることは誰もが知っています。

Go 言語のアドレス文字は & で、変数の前に使用すると、対応する変数のメモリアドレスが返されます。

次の例は、メモリ内の変数のアドレスを示しています:

Example

package main
import "fmt"
func main() {
   var a int = 10  
   fmt.Printf("变量的地址: %x\n", &a  )
}
ログイン後にコピー

上記のコードを実行した出力結果は次のとおりです:

变量的地址: 20818a220
ログイン後にコピー

Now私たちが学んだことは、メモリアドレスとそれにアクセスする方法です。次にポインタを詳しく紹介します。

ポインタとは

#ポインタ変数は、値のメモリ アドレスを指します。

変数や定数と同様に、ポインターを使用する前に宣言する必要があります。ポインタ宣言の形式は次のとおりです。

var var_name *var-type
ログイン後にコピー

var-type はポインタの型、var_name はポインタ変数名、* 記号は変数がポインタとして使用されることを指定するために使用されます。以下は有効なポインタ宣言です:

var ip *int        /* 指向整型*/
var fp *float32    /* 指向浮点型 */
ログイン後にコピー

この場合、これは int および float32 へのポインタです。

ポインターの使用方法

ポインターの使用プロセス:

  • ポインター変数を定義します。

  • ポインタ変数に値を代入します。

  • ポインタ変数のアドレスを指す値にアクセスします。

ポインターが指すコンテンツを取得するには、ポインター型の前に * (プレフィックス) を追加します。

package main
import "fmt"
func main() {
   var a int= 20   /* 声明实际变量 */
   var ip *int        /* 声明指针变量 */
   ip = &a  /* 指针变量的存储地址 */
   fmt.Printf("a 变量的地址是: %x\n", &a  )
   /* 指针变量的存储地址 */
   fmt.Printf("ip 变量储存的指针地址: %x\n", ip )
   /* 使用指针访问值 */
   fmt.Printf("*ip 变量的值: %d\n", *ip )
}
ログイン後にコピー

上記の例の実行出力は次のとおりです:

a 变量的地址是: 20818a220
ip 变量储存的指针地址: 20818a220
*ip 变量的值: 20
ログイン後にコピー

Go null pointer

ポインタが定義されている場合変数に代入すると、その値は nil になります。

nil ポインタはヌル ポインタとも呼ばれます。

nil は概念的には他の言語の null、None、nil、NULL と同じであり、それらはすべてゼロまたは空の値を指します。

ポインタ変数は通常、ptr と省略されます。

次の例を参照してください:

package main
import "fmt"
func main() {
   var  ptr *int
   fmt.Printf("ptr 的值为 : %x\n", ptr  )
}
ログイン後にコピー

上記の例の出力結果は次のとおりです:

ptr 的值为 : 0
ログイン後にコピー

Null ポインタ判定:

if(ptr != nil)     /* ptr 不是空指针 */
if(ptr == nil)    /* ptr 是空指针 */
ログイン後にコピー
More go 言語の技術記事については、

go language チュートリアル列をご覧ください。

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート