我目前正在嘗試學習 GO,主要是了解和使用 Java、ASP.Net 和一些 Python,沒有使用類似 C 的指標的經驗,這導致了我目前的困惑。
我目前用來撰寫我的第一個 GO 專案的庫稱為Commando。在那里,我有結構CommandRegistry,感興趣的變數稱為 Commands。
在結構體中,變數描述如下:
// registered command configurations
Commands map[string]*Command
乍一看,我將其理解為包含字串串列的 Map 物件,但它也顯示了對實際 Command 物件的指標參考。
我所能看到的是,它是一個我可以回圈的映射,它回傳命令的名稱(字串),但是我想知道*Command型別描述中的 是否意味著我可以以某種方式取消參考指標并將物件本身檢索到提取它的附加資訊。
據我所知,&運算元用于創建另一個物件的新指標。Pass-by-reference基本上代替pass-by-value. 并且*運算元通常表示物件是一個指標或用于在新函式中需要一個指標。
有沒有辦法可以檢索Command物件,或者為什么型別*Command在它的宣告中包含?
uj5u.com熱心網友回復:
Commands是一個映射(字典),它以字串為鍵,以指向命令的指標為值。通過向它傳遞一個鍵,您將獲得一個指向它所屬命令的指標。然后,您可以Command使用*運算子取消參考指向實際物件的指標。類似的東西dereferencedCommand := *Commands["key"]。
該*運營商可能會相當混亂,至少對我來說是。當用作型別時,它表示我們正在接收某個變數的記憶體地址。但是要將記憶體地址取消參考為具體型別,您還可以使用*運算子。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/330034.html
上一篇:如何在C 中將void/null作為默認引數添加到函式/lambda指標?
下一篇:填充矩陣時訪問沖突寫入位置
