檢測結構體中修改的屬性
在 Go 中,確定結構體的屬性是否已設定可能具有挑戰性。與其他語言不同,沒有內建機制來檢查結構中未初始化的值。
使用指標(dyoo 的建議)
如 dyoo 所提到的,使用指針對於結構屬性,您可以區分設定值和未設定值。如果指標為 nil,則該值被視為未設定。
指標範例:
type MyStruct struct { Property *string } // ... if s1.Property != nil { // do something with this }
使用空字串(維護者的回應)
如果您喜歡使用字串而不是指針,您可以將該值與空字串進行比較以確定是否已設定。
字串範例:
type MyStruct struct { Property string } // ... if s1.Property != "" { // do something with this }
在提供的程式碼範例中,s1.Property具有非空值,將被視為已設置,而s2. Property為空且將被視為
替代方法
除了提到的方法之外,您還可以探索其他選項,例如使用反射或定義自己的setter函數來追蹤屬性的更改價值。然而,這些方法可能需要額外的程式碼和複雜性。
以上是如何偵測 Go 中是否設定了結構體屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!