Golang的值类型和引用类型的范围、存储区域、区别
常見的值類型和引用類型分別有哪些?
值類型:基本數據類型 int 系列, float 系列, bool, string 、數組和結構體struct,使用這些類型的變量直接指向存在內存中的值,值類型的變量的值通常存儲在棧中。
引用類型:指針、slice切片、map、管道chan、interface 等都是引用類型
數據存儲的兩大塊:棧和堆
在內存里分成兩大塊,棧和堆,值類型的變量通常存儲在棧區,引用類型通常存儲在堆區,在golang中,但有可能值類型也存儲在堆區,反過來也有可能引用類型存儲在棧區。
兩種類型的區別(拷貝操作和函數傳參)
值類型:值類型的變量通常在棧中分配。當使用等號=將一個變量的值賦給另一個變量時,如num=100, j = num,實際上是在內存中將num的值進行了拷貝。可以通過 &i 獲取變量 i 的內存地址。? 值拷貝
引用類型:變量存儲的是一個地址,這個地址對應的空間才真正存儲數據(值),內存通常在堆上分配,當沒有任何變量引用這個地址時,該地址對應的數據空間就成為一個垃圾,由GC來回收。?
引用類型擁有更復雜的存儲結構:(1)分配內存 (2)初始化一系列屬性等一個引用類型的變量r1存儲的是r1的值所在的內存地址(數字),或內存地址中第一個數字所在的位置,這個內存地址被稱之為指針,這個指針實際上也被存在另外的某一個數字中。 可以看本篇文章了解Golang指針基本介紹及使用案例
轉載于:https://www.cnblogs.com/wt645631686/p/9476561.html
總結
以上是生活随笔為你收集整理的Golang的值类型和引用类型的范围、存储区域、区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华夏银行信用卡自动分期怎么申请?申请条件
- 下一篇: 网络规划设计(项目类业务)