Go中取址符(&)取的到底是記憶體地址,還是指標變數?
** 最近在書上看到一個例子:**
package main
import "fmt"
func main() {
var a = [3]int{1, 2, 3}
var b = &a // & 應該是取址符,變數b就應該是陣列a在記憶體中的地址,那麼為什麼b[1]可以自加
b[1]++
fmt.Println(a, *b)
}
** 對於取址符有了一些疑問,根據這個例子,單獨寫了一段 demo 程式碼:**
package main
import "fmt"
func main() {
var a = []int{1,2,3} // or var a = 3
var b = &a
fmt.Println(b)
}
** 經過測試 dmeo 程式碼中,如果變數 a 為基本型別(例如:int、float、string 等),則變數 b 返回的就是變數 a 在記憶體中的地址,但是如果變數 a 為複合型別(例如:陣列、切片),則變數 b 返回的是指標變數,且可以當作複合型別的變數直接使用(例如:b[1]++),為什麼 Go 中的&符返回的東西不一致呢?**
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- C語言第九周作業(指標變數,記憶體訪問,取址,空指標)C語言指標變數記憶體
- GO 指標*&問題疑問Go指標
- PHP取地址符(引用符)&詳解PHP
- C指標與記憶體指標記憶體
- Delphi 記憶體與指標記憶體指標
- 使用Go實現健壯的記憶體型快取Go記憶體快取
- Go指標探秘:深入理解記憶體與安全性Go指標記憶體
- C++中的動態記憶體與智慧指標C++記憶體指標
- Oracle記憶體中的幾個重要監控指標Oracle記憶體指標
- CPU快取記憶體快取記憶體
- 端到端的地址翻譯(虛擬地址是怎樣取到相應快取記憶體的資料的?)快取記憶體
- js獲取url地址中的引數JS
- go中的記憶體逃逸Go記憶體
- go是如何分配記憶體的?Go記憶體
- Go 語言指標符號 *和&Go指標符號
- RAM是記憶體還是外存記憶體
- 衡量記憶體閒忙程度的指標記憶體指標
- 到底是先更新資料庫還是先更新快取?資料庫快取
- 指標變數指標變數
- Go 的記憶體對齊和指標運算詳解和實踐Go記憶體指標
- 在 Go 專案中基於本地記憶體快取的實現及應用Go記憶體快取
- 函式中的指標分配的記憶體怎麼釋放函式指標記憶體
- DDD 和 記憶體快取記憶體快取
- iOS 除SDWebImage之外清理記憶體中快取iOSWeb記憶體快取
- 多核cpu、cpu快取記憶體、快取一致性協議、快取行、記憶體快取記憶體協議
- Glide - 記憶體快取與磁碟快取IDE記憶體快取
- 深入理解Go系列一之指標變數Go指標變數
- C++ 引用和指標:記憶體地址、建立方法及應用解析C++指標記憶體
- XPAGES 中CGI變數的獲取變數
- Android記憶體優化之記憶體快取Android記憶體優化快取
- 獲取linux可用記憶體 剩餘記憶體Linux記憶體
- MRAM快取記憶體的組成快取記憶體
- go語言引數傳遞到底是傳值還是傳引用Go
- docker部署redis快取記憶體DockerRedis快取記憶體
- 談談CPU快取記憶體快取記憶體
- CPU快取和記憶體屏障快取記憶體
- 從幾個指標談windows記憶體指標Windows記憶體
- C++ 指標動態記憶體分配C++指標記憶體