Go 中的嵌入:何時使用指針
將一個結構體嵌入另一個結構體時,使用指針還是值取決於關於所需的功能和記憶體管理注意事項。
使用值
按值嵌入結構意味著嵌入結構的副本儲存在包含結構中。這適用於以下情況:
<code class="go">type Job struct { Command string log.Logger }</code>
使用指標
透過指標嵌入結構允許在包含結構的多個實例之間共享記憶體。這對於:
<code class="go">type Job struct { Command string *log.Logger }</code>
指針嵌入的優勢
Eric Urban(「Hydrogen18」)創造了術語「指針嵌入」。它有以下優點:
透過指針嵌入的享元模式
透過嵌入指向Bitmap 結構的指針,多個Renderer 結構可以共享相同的底層位圖數據,從而減少記憶體消耗並啟用運行時靈活性。
<code class="go">type Bitmap struct{ data [4][5]bool } type Renderer struct{ *Bitmap //Embed by pointer on uint8 off uint8 }</code>
指針嵌入的限制
匿名欄位不能有指向指標或介面類型的指針,因為這些類型沒有方法。此限制旨在防止錯誤使用介面指標並保持語言的一致性。
以上是Go 中的嵌入:何時使用指標與值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!