首頁 > 後端開發 > Golang > 主體

檢查 nil 後從結構體中賦值

PHPz
發布: 2024-02-09 13:54:08
轉載
525 人瀏覽過

检查 nil 后从结构体中赋值

php小編草莓今天為大家介紹一種常見的程式設計技巧-"檢查 nil 後從結構體中賦值"。在編寫程式碼時,我們經常會遇到需要從一個結構體中取得某個欄位的值的情況。然而,由於可能存在 nil 值的情況,直接取值可能會導致程式崩潰。為了解決這個問題,我們需要在取值前先進行 nil 檢查,以確保程式的穩定性。本文將詳細介紹這種技巧的具體實作方式,幫助讀者更能理解並應用於實際開發中。

問題內容

我有一個結構體,其中包含結構體等元素。

假設我的分配如下:

validfrom := dkdm.authenticatedpublic.requiredextensions.kdmrequiredextensions.contentkeysnotvalidbefore 該資料是動態的,任何時候的任何元素都可能因解析錯誤或沒有資料而為零。

例如,kdmrequiredextensions 可以是 nil,當我嘗試存取 contentkeysnotvalidbefore 時,它將拋出 nil 指標引用錯誤。

是否有可能有一種方法,接受元素並逐一檢查值鏈,只有在沒有元素為 nil 時才返回。

validfrom := checkandassign(dkdm.authenticatedpublic.requiredextensions.kdmrequiredextensions.contentkeysnotvalidbefore)
登入後複製

我在賦值之前嘗試過 if 語句,但希望有一個更簡潔的方法。

if dkdm.AuthenticatedPublic.RequiredExtensions != nil &&
    dkdm.AuthenticatedPublic.RequiredExtensions.KDMRequiredExtension != nil {
      validFrom = dkdm.AuthenticatedPublic.RequiredExtensions.KDMRequiredExtensions.ContentKeysNotValidBefore
}
登入後複製

解決方法

是否有可能有一種方法,接受元素並逐一檢查值鏈,只有在沒有元素為 nil 時才返回。

不,go 中沒有這樣的語法或工具。

我在賦值之前嘗試過 if 語句,但希望有一個更簡潔的方法。

if 語句「乾淨」的方式。您可以透過引入一個新變數來縮短它,例如

if re := dkdm.AuthenticatedPublic.RequiredExtensions; re != nil && 
    re.KDMRequiredExtension != nil  {
    ....
}
登入後複製

以上是檢查 nil 後從結構體中賦值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!