廢話少說(shuō),直接貼代碼~
type A struct {
Name string
}
// 測(cè)試unit
func TestReflect(t *testing.T) {
reflectNew((*A)(nil))
}
//反射創(chuàng)建新對(duì)象。
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)建對(duì)象
newStruc.Elem().FieldByName("Name").SetString("Lily") //設(shè)置值
newVal := newStruc.Elem().FieldByName("Name") //獲取值
fmt.Println(newVal.String())
}
補(bǔ)充:Go語(yǔ)言中創(chuàng)建對(duì)象的幾種方式
對(duì)于Go對(duì)象
type Car struct {
color string
size string
}
方式一:
使用T{…}方式,結(jié)果為值類型
方式二:
使用new的方式,結(jié)果為指針類型
方式三:
使用方式,結(jié)果為指針類型
以下為創(chuàng)建并初始化
c3 := Car{"紅色", "1.2L"}
c4 := Car{color: "紅色"}
c5 := Car{color: "紅色"}
構(gòu)造函數(shù):
在Go語(yǔ)言中沒(méi)有構(gòu)造函數(shù)的概念,對(duì)象的創(chuàng)建通常交由一個(gè)全局的創(chuàng)建函數(shù)來(lái)完成,以 NewXXX 來(lái)命名,表示“構(gòu)造函數(shù)” :
func NewCar(color,size string)*Car {
return Car{color,size}
}
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- Go語(yǔ)言變量創(chuàng)建的五種方法
- Go語(yǔ)言創(chuàng)建、初始化數(shù)組的常見(jiàn)方式匯總
- Go語(yǔ)言中的復(fù)合類型詳細(xì)介紹