中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang怎么通過反射創建新對象

發布時間:2021-04-29 14:09:04 來源:億速云 閱讀:1644 作者:小新 欄目:開發技術

小編給大家分享一下golang怎么通過反射創建新對象,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

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語言中創建對象的幾種方式

對于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怎么通過反射創建新對象”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延川县| 揭东县| 长垣县| 崇文区| 大同市| 历史| 咸阳市| 大英县| 彰武县| 牙克石市| 广西| 远安县| 门头沟区| 博白县| 石嘴山市| 宜丰县| 旬阳县| 禹州市| 基隆市| 左权县| 南昌县| 余庆县| 福州市| 卫辉市| 田林县| 新邵县| 来宾市| 洪湖市| 确山县| 庐江县| 吉水县| 将乐县| 新巴尔虎左旗| 长治市| 奇台县| 拜城县| 德昌县| 北票市| 新闻| 惠州市| 鞍山市|