ゴーコア開発の研究ノート(5) - ポインタ

複合データ型:

  1. ポインタのポインタ
  2. 配列array
  3. 構造体struct、クラスの代替
  4. パイプラインチャンネル
  5. ファンクション(また関数型)
  6. スライススライス
  7. インターフェースインターフェース
  8. マップは比較的単純で複雑ではない(同様のハッシュマップ、セット)、他の言語マップの同等の、これだけ。

ポインタ:
;関連するすべての参照はポインタに関する
変数値は、値型と呼ばれ、格納され、基本データ型と、
メモリ内のデータレイアウトの分析の基本的なタイプ。

  • ポインタ変数はどのようなものです:

    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)
    }
    
  • 値型と参照型:

  1. 値の種類:基本データ型、文字列、配列、構造体
  2. リファレンスタイプ:ポインタ、スラ​​イス、マップ、チャネル、インタフェース
  • :スタック領域とヒープメモリのロジックに
    、値型はスタック領域の割り当て、変数直接割り当て、一般に
    参照型は、一般的にヒープ領域に割り当てられ、(アドレスが実空間データ記憶装置に対応する、可変アドレスに格納されています何の変数の参照は、アドレスが、GCは、廃棄物がリサイクルされてなることがない変数値)
    スタックは論理的な概念であることから、ライフサイクルの長さに応じたので、いくつかのコンパイラは、さえスタックがマージされ、詳細なgolang変数を区別しません。スタックやヒープ領域上のエンドゾーンでの判断。
公開された50元の記事 ウォン称賛18 ビュー4024

おすすめ

転載: blog.csdn.net/weixin_41047549/article/details/89578491