Go: Readonly Variable

只讀變量的缺失,應該算 Go 語言 「設計缺陷」。舉例來講,默認以 error 實例來判斷錯誤類別,但這些可導出全局變量實際可被外部修改,那麼就存在隱性風險。函數

圖片描述
圖片描述

在實際開發中,有不少需設置訪問權限的內存敏感數據,包括只讀、只寫,或不可操做等,好在可藉助 syscall 實現。spa

圖片描述

使用示例:設計

圖片描述
圖片描述

固然,能夠在此基礎上實現更多功能,基本原理相似。對於敏感數據,還應增長以下功能:blog

  1. 身份驗證:用 runtime.Caller 驗證調用堆棧,僅容許指定函數調用。圖片

  2. 內存鎖定:用 syscall.Mlock 將數據鎖定在物理內存頁,禁止交換到硬盤。內存

最新動態,請掃碼關注
圖片描述開發

相關文章
相關標籤/搜索