只讀變量的缺失,應該算 Go 語言 「設計缺陷」。舉例來講,默認以 error 實例來判斷錯誤類別,但這些可導出全局變量實際可被外部修改,那麼就存在隱性風險。函數
在實際開發中,有不少需設置訪問權限的內存敏感數據,包括只讀、只寫,或不可操做等,好在可藉助 syscall 實現。spa
使用示例:設計
固然,能夠在此基礎上實現更多功能,基本原理相似。對於敏感數據,還應增長以下功能:blog
身份驗證:用 runtime.Caller 驗證調用堆棧,僅容許指定函數調用。圖片
內存鎖定:用 syscall.Mlock 將數據鎖定在物理內存頁,禁止交換到硬盤。內存
最新動態,請掃碼關注開發