golang通過反射設定結構體欄位的值
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func SetValueToStruct(name string,age int) *Person {
p := &Person{}
v := reflect.ValueOf(p).Elem()
v.FieldByName("Name").Set(reflect.ValueOf(name))
v.FieldByName("Age").Set(reflect.ValueOf(age))
return p
}
func main() {
p := SetValueToStruct("張三",18)
fmt.Println(*p)
}
注:可能出現的錯誤
1.結構體首字母必須大寫,否則會出現:panic: reflect: reflect.Value.Set using value obtained using unexported field 在Golang中首字母的大小寫代表著訪問許可權,首字母小寫則包外無法訪問 2. 反射需要使用地址 否則會出現:panic: reflect: reflect.Value.Set using unaddressable value 如下程式碼就會出現panic p := Person{} v := reflect.ValueOf(p) v.FieldByName("Name").Set(reflect.ValueOf(name)) v.FieldByName("Age").Set(reflect.ValueOf(age))
相關文章
- Go 通過反射的reflect設定實際變數的值Go反射變數
- sql設定欄位預設值SQL
- 通過java反射,遞迴查詢物件所有屬性,為空也要返回欄位的結構Java反射遞迴物件
- MySQL欄位預設值設定詳解MySql
- Dynamics CRM 通過配置來設定查詢欄位的預設檢視
- SharePoint 多行文字欄位設定預設值
- pydantic 欄位的預設值設定獲取當前時間
- dotnet C# 給結構體欄位賦值非執行緒安全C#結構體賦值執行緒
- Golang通脈之反射Golang反射
- 【Golang】Go 通過結構(struct) 實現介面(interface)GolangStruct
- 將表結構轉換成實體欄位
- Gin 框架怎麼驗證繫結到結構體的欄位?框架結構體
- oracle增加欄位帶預設值Oracle
- 查詢oracle欄位預設值Oracle
- jpa~為欄位新增insert的預設值
- MySQL null值欄位是否使用索引的總結MySqlNull索引
- 逆向工程通過某個欄位排序排序
- java透過反射統計實體類和父類中為空的欄位數量Java反射
- 【Mongo】mongo更新欄位為另一欄位的值Go
- Linux 核心裡的資料結構——位陣列位陣列宣告體系結構特定的位操作通Linux資料結構陣列
- 簡單介紹如何通過註解獲取反射的值反射
- Golang技巧之預設值設定的高階玩法Golang
- 建議欄位別名定義定義那裡順便可定義預設值,這預設值還可以是函式函式
- Drupal 如何得到欄位的值?
- golang類和結構體Golang結構體
- ElasticSearch 設定某個欄位不分詞Elasticsearch分詞
- Sqlserver的欄位datetime型別預設值設為getdate()時,設值毫秒為000SQLServer型別
- C#反射設定屬性值和獲取屬性值C#反射
- C語言結構聯合位欄位知識體系總結大學霸IT達人C語言
- 關於mysql設定varchar 欄位的預設值''和null的區別,以及varchar和char的區別MySqlNull
- 表欄位經常要增加的業務怎麼設計表結構
- Django日期欄位預設值default=timezone.nowDjango
- golang json字串轉結構體GolangJSON字串結構體
- [需求建議]建議欄位別名定義定義那裡順便可定義預設值,這預設值還可以是函式函式
- 總結一下公共欄位(aop加自定義註解加反射)反射
- [提問交流]建立模型,新增屬性,欄位型別如何設定2位小數的欄位型別模型型別
- 【EF Core】自動生成的欄位值
- [20201109]11.2.0.4增加欄位與預設值問題.txt
- Django 公共模型欄位的設定和繼承(AuditBaseModel、ApprovalBaseModel)Django模型繼承APP