golang 如何通過反射創(chuàng)建新對象
更新時間:2021年04月28日 14:58:37 作者:RuoiseHone
這篇文章主要介紹了golang 通過反射創(chuàng)建新對象的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
廢話少說,直接貼代碼~
type A struct { Name string } // 測試unit func TestReflect(t *testing.T) { reflectNew((*A)(nil)) } //反射創(chuàng)建新對象。 func reflectNew(target interface{}) { if target == nil { fmt.Println("參數(shù)不能未空") return } t := reflect.TypeOf(target) if t.Kind() == reflect.Ptr { //指針類型獲取真正type需要調(diào)用Elem t = t.Elem() } newStruc := reflect.New(t)// 調(diào)用反射創(chuàng)建對象 newStruc.Elem().FieldByName("Name").SetString("Lily") //設置值 newVal := newStruc.Elem().FieldByName("Name") //獲取值 fmt.Println(newVal.String()) }
補充:Go語言中創(chuàng)建對象的幾種方式
對于Go對象
type Car struct { color string size string }
方式一:
使用T{…}方式,結(jié)果為值類型
c := Car{}
方式二:
使用new的方式,結(jié)果為指針類型
c1 := new(Car)
方式三:
使用&方式,結(jié)果為指針類型
c2 := &Car{}
以下為創(chuàng)建并初始化
c3 := &Car{"紅色", "1.2L"} c4 := &Car{color: "紅色"} c5 := Car{color: "紅色"}
構造函數(shù):
在Go語言中沒有構造函數(shù)的概念,對象的創(chuàng)建通常交由一個全局的創(chuàng)建函數(shù)來完成,以 NewXXX 來命名,表示“構造函數(shù)” :
func NewCar(color,size string)*Car { return &Car{color,size} }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
golang?gin框架實現(xiàn)大文件的流式上傳功能
這篇文章主要介紹了golang?gin框架中實現(xiàn)大文件的流式上傳,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07Go結(jié)合JavaScript實現(xiàn)抓取網(wǎng)頁中的圖像鏈接
這篇文章主要為大家詳細介紹了Go語言如何結(jié)合JavaScript實現(xiàn)抓取網(wǎng)頁中的圖像鏈接,文中的示例代碼講解詳細,有需要的小伙伴可以跟隨小編一起學習一下2023-11-11