複合データ型:
- ポインタのポインタ
- 配列array
- 構造体struct、クラスの代替
- パイプラインチャンネル
- ファンクション(また関数型)
- スライススライス
- インターフェースインターフェース
- マップは比較的単純で複雑ではない(同様のハッシュマップ、セット)、他の言語マップの同等の、これだけ。
ポインタ:
;関連するすべての参照はポインタに関する
変数値は、値型と呼ばれ、格納され、基本データ型と、
メモリ内のデータレイアウトの分析の基本的なタイプ。
-
ポインタ変数はどのようなものです:
package main import "fmt" func main() { var num int = 200 fmt.Println(&num) //num变量的内存地址0xXXXXXXXX var ptr *int = &num //指针变量是num变量的内存地址0xXXXXXXXX,即ptr=&num,ptr数据类型为指针 fmt.Println(ptr) //内存地址0xXXXXXXXX fmt.Println(*ptr) //内存地址0xXXXXXXXX对应的值,也就是num变量对应的变量值 fmt.Println(**&ptr) //*&ptr相同于ptr,**&prt==*prt,也就是取本内存地址0xXXXXXXXX的变量值 }
-
ポインタ変数がメモリに格納されている値を変更します。
package main import "fmt" func main() { var a int = 100 //变量值为100 var ptr *int = &a //定义一个指针变量,指向a的内存地址 *ptr = 200 //将内存地址对应的变量值修改为200 fmt.Println(a) //再打印a,对应变量值变为200 }
-
文字列ポインタの値を変更します。
package main import "fmt" func main() { var b string = "shit!" var ptr1 *string = &b *ptr1 = "hit!" fmt.Println(b) }
-
値型と参照型:
- 値の種類:基本データ型、文字列、配列、構造体
- リファレンスタイプ:ポインタ、スライス、マップ、チャネル、インタフェース
- :スタック領域とヒープメモリのロジックに
、値型はスタック領域の割り当て、変数直接割り当て、一般に
参照型は、一般的にヒープ領域に割り当てられ、(アドレスが実空間データ記憶装置に対応する、可変アドレスに格納されています何の変数の参照は、アドレスが、GCは、廃棄物がリサイクルされてなることがない変数値)
スタックは論理的な概念であることから、ライフサイクルの長さに応じたので、いくつかのコンパイラは、さえスタックがマージされ、詳細なgolang変数を区別しません。スタックやヒープ領域上のエンドゾーンでの判断。