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反射變數
- C#通過反射獲取物件屬性,列印所有欄位屬性的值C#反射物件
- sql設定欄位預設值SQL
- 通過java反射,遞迴查詢物件所有屬性,為空也要返回欄位的結構Java反射遞迴物件
- MySQL欄位預設值設定詳解MySql
- Dynamics CRM 通過配置來設定查詢欄位的預設檢視
- 反射-通過反射寫一個通用的設定某個物件的某個屬性為指定的值反射物件
- mysql-欄位設定Default值問題MySql
- .net中通過反射得到所有的私有欄位(包括父類)反射
- SharePoint 多行文字欄位設定預設值
- go根據字元動態設定結構體欄位名--hprose rpc應用Go字元結構體ROSRPC
- pydantic 欄位的預設值設定獲取當前時間
- dotnet C# 給結構體欄位賦值非執行緒安全C#結構體賦值執行緒
- Golang通脈之反射Golang反射
- 【COLUMN】設定表欄位預設值僅對未來生效
- 【Golang】Go 通過結構(struct) 實現介面(interface)GolangStruct
- MySQL修改欄位預設值MySql
- 對錶中的欄位設定了預設值,新增記錄後卻發現該欄位為nullNull
- DataGrid中通過CHECKBOX來修改庫裡某個欄位的值
- 將表結構轉換成實體欄位
- 反射-通過反射獲取私有構造方法並使用反射構造方法
- oracle增加欄位帶預設值Oracle
- golang通過反射使用json字串呼叫struct的指定方法及返回json結果Golang反射JSON字串Struct
- 不確定的資料結構試驗clob欄位儲存資料結構
- MySQL-修改欄位型別、設定預設值,以及新增註釋MySql型別
- MSSql得到表的結構和欄位SQL
- 逆向工程通過某個欄位排序排序
- MySQL null值欄位是否使用索引的總結MySqlNull索引
- 【譯】4. Java反射——欄位Java反射
- 反射-通過反射獲取無參構造方法並使用反射構造方法
- 反射-通過反射獲取帶參構造方法並使用反射構造方法
- 【Mongo】mongo更新欄位為另一欄位的值Go
- 通過反射獲取窗體例項反射
- 獲取表的結構、欄位描述等
- 設定InfoObject的過濾值Object
- 預設的sql_mode,即使值的長度超過欄位的定義,也能截斷資料插入SQL
- 簡單介紹如何通過註解獲取反射的值反射
- SQLLDR——CTL檔案:欄位設定SQL