最近在寫一個自動生成api文檔的功能,用到了reflect包來給結構體賦值,給空數組新增一個元素,這樣只要定義一個input結構體和一個output的結構體,并填寫一些相關tag信息,就能使用程序來生成輸入和輸出的相關文檔。

介紹

reflect包是golang中很重要的一個包,實現了在運行時允許程序操縱任意類型對象的功能??梢钥聪?a style="margin: 0px; padding: 0px; outline: none; color: black;">文檔簡單了解一下。

在reflect中,最重要的是Value類,只有先獲取到一個對象或者變量的Value對象后,我們才可以對這個對象或者變量進行更進一步的分析和處理。我們可以使用reflect.ValueOf()方法獲取Value對象。

var i intvalue := reflect.ValueOf(i) // 使用ValueOf()獲取到變量的Value對象type S struct {
    a string}var s S
value2 := reflect.ValueOf(s) // 使用ValueOf()獲取到結構體的Value對象

獲取到對象或者變量的Value對象后,我們就可以對他們進一步的操作了。

1.獲取對象或者變量的類型(Value.Type()和Value.Kind())

網友評論