まず、我々は明確でなければならない:
(1)基本データ型:変数の値が格納され、また、値型としても知られています。
(2)を用いて&そのようなVaRのNUM int型、NUM取得したアドレス変数のアドレスを取得:&NUM。
(3)ポインタ型:変数がメモリ空間に、このアドレスポイントアドレスが格納される値であり、例えばVAR PTR * INT =&NUM。
(4)*使用、型へのポインタのポイントの値を取得し、値を取得するために使用される例えばVAR * PTRのINT、* ptrがPTRによって指さ。
パッケージメイン インポート( " FMT " ) FUNCのmain(){ VAR int型かどうか = 1 VAR PTR * INT =&アート fmt.Println(" NUMのアドレスは次のとおりです。"、&NUM) fmt.Println(" 値のptrがある:" 、PTR) fmt.Println(" PTRアドレスは次のとおりです。"、&PTR) }
ptrが、その値はNUMのアドレスで、同時に、それ自身のアドレスがあるだろう、ポインタです。私たちは、アドレスを介して変数に変数の値を検索し、変更することができます。
パッケージメイン インポート( " FMT " ) FUNCのmain(){ だったのint NUM = 1は、 ptrがいた * int型 fmt.Println(" NUMの値は次のとおりです。" 、NUM) PTR =&NUM * PTR = 10 fmt.Println(" NUMの値は:" 、NUM) }
変数の型と一致するようにポインタ型の間注:我々はまた、ポインタの変数の値の異なる値を切り替えることによって変化させることができます。
パッケージメイン インポート( " FMT " ) FUNCのmain(){ だっNUM1 INT = 1は、 num2のint型だった = 2 だったPTR * int型 fmt.Println(" 値NUM1がある:" 、NUM1) fmt.Println(" 値からnum2がある:" 、NUM2) PTR =&NUM1 * 10 = PTR PTR =&NUM2 * PTR = 20である fmt.Println(" 値NUM1がある:" 、NUM1) fmt.Println(" 値からnum2がある:" 、NUM2) }
詳細ポインタ:
(1)値の種類は、例えば、対応するポインタとして*データ型の形式で対応するポインタを有しているINT INT *、*のfloat32ポインタをフロートされる対応します。
(2)値の種類であって、基本的なデータ・タイプはint、フロートシリーズ、ブール、文字列、配列と構造の一連。
値型と参照型:
含む(1)値型:基本データ型INT、フロートシリーズ、ブール、文字列、配列と構造の一連。
(2)参照型:ポインタ、スライス断面、マップ、導管、チャネル、インタフェース等。
値型と参照型の間の差:
(1)値型、変数をメモリに直接格納さは、通常、スタック割り当て。
(2)参照型:変数ノーアドレス、データ空間の変化に対応したアドレスを参照しない場合に変数記憶アドレスは、実ストレージのアドレス空間に対応するデータ値が、メモリは、通常、ヒープ上に割り当てられていますGCでのリサイクルへのごみ。