透過Go 的Reflect 套件存取結構體欄位標籤
可以使用Go 的Reflect 套件來反射結構體的欄位並擷取其標籤值。考慮以下範例:
type User struct { name string `json:"name-field"` age int } // ... user := &User{"John Doe The Fourth", 20} getStructTag(user.name) // How to obtain the tag value here?
解決方案
將整個結構傳遞給 getStructTag 是不必要的。相反,我們可以利用reflect.TypeOf函數來取得結構體的類型,並利用Elem方法來檢索底層值類型。然後,我們使用 FieldByName 來存取所需的結構體欄位。
field, ok := reflect.TypeOf(user).Elem().FieldByName("name") if !ok { // Handle error } tag := string(field.Tag)
在本例中,我們使用 Elem,因為 user 是指向結構體的指標。透過存取FieldByName字段,我們可以直接取得「name」字段對應的reflect.StructField。取得欄位的 Tag 屬性提供對標記值的存取。
DEMONSTRATION
可以在以下連結找到此技術的互動式範例:[反思結構體欄位的標籤](https://play.golang.org/ p/_M9Q-r1fuzq)。
以上是如何使用 Go 的 Reflect 套件存取結構體欄位標籤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!