您好,登錄后才能下訂單哦!
小編給大家分享一下golang怎么通過反射創建新對象,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
golang可以做服務器端開發,但golang很適合做日志處理、數據打包、虛擬機處理、數據庫代理等工作。在網絡編程方面,它還廣泛應用于web應用、API應用等領域。
type A struct { Name string } // 測試unit func TestReflect(t *testing.T) { reflectNew((*A)(nil)) } //反射創建新對象。 func reflectNew(target interface{}) { if target == nil { fmt.Println("參數不能未空") return } t := reflect.TypeOf(target) if t.Kind() == reflect.Ptr { //指針類型獲取真正type需要調用Elem t = t.Elem() } newStruc := reflect.New(t)// 調用反射創建對象 newStruc.Elem().FieldByName("Name").SetString("Lily") //設置值 newVal := newStruc.Elem().FieldByName("Name") //獲取值 fmt.Println(newVal.String()) }
補充:Go語言中創建對象的幾種方式
type Car struct { color string size string }
使用T{…}方式,結果為值類型
c := Car{}
使用new的方式,結果為指針類型
c1 := new(Car)
使用&方式,結果為指針類型
c2 := &Car{}
c3 := &Car{"紅色", "1.2L"} c4 := &Car{color: "紅色"} c5 := Car{color: "紅色"}
在Go語言中沒有構造函數的概念,對象的創建通常交由一個全局的創建函數來完成,以 NewXXX 來命名,表示“構造函數” :
func NewCar(color,size string)*Car { return &Car{color,size} }
以上是“golang怎么通過反射創建新對象”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。