Rumah >pembangunan bahagian belakang >Golang >Semak tiada dan kemudian tetapkan nilai daripada struktur
PHP editor Strawberry akan memperkenalkan kepada anda teknik pengaturcaraan biasa hari ini - "semak sifar dan kemudian tetapkan nilai daripada struktur". Semasa menulis kod, kita sering menghadapi situasi di mana kita perlu mendapatkan nilai medan tertentu daripada struktur. Walau bagaimanapun, disebabkan kemungkinan nilai sifar, mengambil nilai secara langsung boleh menyebabkan program ranap. Untuk menyelesaikan masalah ini, kita perlu melakukan semakan sifar sebelum mengambil nilai untuk memastikan kestabilan program. Artikel ini akan memperkenalkan pelaksanaan khusus teknik ini secara terperinci untuk membantu pembaca lebih memahami dan mengaplikasikannya dalam pembangunan sebenar.
Saya mempunyai struktur, yang mengandungi unsur-unsur seperti struktur.
Andaikan pengedaran saya adalah seperti berikut:
validfrom := dkdm.authenticatedpublic.requiredextensions.kdmrequiredextensions.contentkeysnotvalidbefore
Data ini dinamik dan mana-mana elemen pada bila-bila masa mungkin sifar disebabkan oleh ralat penghuraian atau tiada data.
Sebagai contoh, kdmrequiredextensions
可以为 nil,当我尝试访问 contentkeysnotvalidbefore
ia akan membuang ralat rujukan penunjuk sifar.
Adakah mungkin untuk mempunyai kaedah yang mengambil elemen dan menyemak rantaian nilai satu demi satu, kembali hanya jika tiada unsur tiada.
validfrom := checkandassign(dkdm.authenticatedpublic.requiredextensions.kdmrequiredextensions.contentkeysnotvalidbefore)
Saya mencuba pernyataan if sebelum tugasan, tetapi mengharapkan cara yang lebih bersih.
if dkdm.AuthenticatedPublic.RequiredExtensions != nil && dkdm.AuthenticatedPublic.RequiredExtensions.KDMRequiredExtension != nil { validFrom = dkdm.AuthenticatedPublic.RequiredExtensions.KDMRequiredExtensions.ContentKeysNotValidBefore }
Adakah mungkin untuk mempunyai cara yang mengambil elemen dan menyemak rantaian nilai satu demi satu dan hanya kembali jika tiada unsur yang tiada.
Tidak, tiada sintaks atau alatan seperti itu sedang digunakan.
Saya mencuba pernyataan if sebelum tugasan, tetapi mengharapkan cara yang lebih bersih.
if
kenyataan adalah cara yang "bersih". Anda boleh memendekkannya dengan memperkenalkan pembolehubah baharu seperti
if re := dkdm.AuthenticatedPublic.RequiredExtensions; re != nil && re.KDMRequiredExtension != nil { .... }
Atas ialah kandungan terperinci Semak tiada dan kemudian tetapkan nilai daripada struktur. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!