最近在寫一個自動生成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對象后,我們就可以對他們進一步的操作了。