最近在寫一個自動生成api文檔的功能,用到了reflect包來給結(jié)構(gòu)體賦值,給空數(shù)組新增一個元素,這樣只要定義一個input結(jié)構(gòu)體和一個output的結(jié)構(gòu)體,并填寫一些相關(guān)tag信息,就能使用程序來生成輸入和輸出的相關(guān)文檔。
介紹
reflect包是golang中很重要的一個包,實現(xiàn)了在運行時允許程序操縱任意類型對象的功能??梢钥聪?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()獲取到結(jié)構(gòu)體的Value對象
獲取到對象或者變量的Value對象后,我們就可以對他們進一步的操作了。
1.獲取對象或者變量的類型(Value.Type()和Value.Kind())
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26