最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言中使用反射的方法

 更新時(shí)間:2015年02月20日 16:05:24   作者:不吃皮蛋  
這篇文章主要介紹了Go語言中使用反射的方法,實(shí)例分析了Go語言實(shí)現(xiàn)反射的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了Go語言中使用反射的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

復(fù)制代碼 代碼如下:
// Data Model
type Dish struct {
  Id  int
  Name string
  Origin string
  Query func()
}

創(chuàng)建實(shí)例如下:

復(fù)制代碼 代碼如下:
shabushabu = Dish.new
shabushabu.instance_variables # => []
shabushabu.name = "Shabu-Shabu"
shabushabu.instance_variables # => ["@name"]
shabushabu.origin = "Japan"
shabushabu.instance_variables # => ["@name", "@origin"]

完整代碼如下:

復(fù)制代碼 代碼如下:
package main
import(
  "fmt"
  "reflect"
)
 
func main(){
  // iterate through the attributes of a Data Model instance
  for name, mtype := range attributes(&Dish{}) {
    fmt.Printf("Name: %s, Type %s\n", name, mtype.Name())
  }
}
 
// Data Model
type Dish struct {
  Id  int
  Name string
  Origin string
  Query func()
}
 
// Example of how to use Go's reflection
// Print the attributes of a Data Model
func attributes(m interface{}) (map[string]reflect.Type) {
  typ := reflect.TypeOf(m)
  // if a pointer to a struct is passed, get the type of the dereferenced object
  if typ.Kind() == reflect.Ptr{
    typ = typ.Elem()
  }
 
  // create an attribute data structure as a map of types keyed by a string.
  attrs := make(map[string]reflect.Type)
  // Only structs are supported so return an empty result if the passed object
  // isn't a struct
  if typ.Kind() != reflect.Struct {
    fmt.Printf("%v type can't have attributes inspected\n", typ.Kind())
    return attrs
  }
 
  // loop through the struct's fields and set the map
  for i := 0; i < typ.NumField(); i++ {
    p := typ.Field(i)
      if !p.Anonymous {
        attrs[p.Name] = p.Type
      }
     }
  return attrs
}

希望本文所述對大家的Go語言程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • GO語言ini配置文件的讀取的操作

    GO語言ini配置文件的讀取的操作

    這篇文章主要介紹了GO語言ini配置文件的讀取的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Go語言Gin處理響應(yīng)方式詳解

    Go語言Gin處理響應(yīng)方式詳解

    gin框架封裝了常用的數(shù)據(jù)格式方法響應(yīng)于客戶端,下面這篇文章主要給大家介紹了關(guān)于Go語言Gin處理響應(yīng)方式的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • golang 切片的三種使用方式及區(qū)別的說明

    golang 切片的三種使用方式及區(qū)別的說明

    這篇文章主要介紹了golang 切片的三種使用方式及區(qū)別的說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 解決golang 關(guān)于全局變量的坑

    解決golang 關(guān)于全局變量的坑

    這篇文章主要介紹了解決golang 關(guān)于全局變量的坑,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • GORM不定參數(shù)的用法最佳實(shí)踐

    GORM不定參數(shù)的用法最佳實(shí)踐

    這篇文章主要為大家介紹了GORM不定參數(shù)的用法最佳實(shí)踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • go語言實(shí)現(xiàn)簡易比特幣系統(tǒng)錢包的原理解析

    go語言實(shí)現(xiàn)簡易比特幣系統(tǒng)錢包的原理解析

    這篇文章主要介紹了go語言實(shí)現(xiàn)簡易比特幣系統(tǒng)錢包的原理解析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • go Antlr重構(gòu)腳本解釋器實(shí)現(xiàn)示例

    go Antlr重構(gòu)腳本解釋器實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了go Antlr重構(gòu)腳本解釋器實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 如何在Go中將[]byte轉(zhuǎn)換為io.Reader

    如何在Go中將[]byte轉(zhuǎn)換為io.Reader

    本文主要介紹了如何在Go中將[]byte轉(zhuǎn)換為io.Reader,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 基于Go語言實(shí)現(xiàn)文件上傳服務(wù)的示例代碼

    基于Go語言實(shí)現(xiàn)文件上傳服務(wù)的示例代碼

    在 Web 開發(fā)中,文件上傳 是常見需求,例如頭像上傳、文檔存儲、圖片分享等功能,Go 語言的標(biāo)準(zhǔn)庫 net/http 已經(jīng)內(nèi)置了對 multipart/form-data 類型的支持,能讓我們輕松構(gòu)建一個(gè)文件上傳服務(wù),本文將帶你實(shí)現(xiàn)一個(gè)可運(yùn)行的文件上傳接口,需要的朋友可以參考下
    2025-08-08
  • go語言實(shí)現(xiàn)全排列的示例代碼

    go語言實(shí)現(xiàn)全排列的示例代碼

    本文主要介紹了go語言實(shí)現(xiàn)全排列的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評論

筠连县| 江津市| 格尔木市| 荆州市| 西青区| 呼伦贝尔市| 汶上县| 阜宁县| 教育| 安塞县| 遵义市| 从化市| 蓬莱市| 东辽县| 曲松县| 西安市| 六枝特区| 呼玛县| 石林| 德保县| 无为县| 花莲县| 花垣县| 江阴市| 靖远县| 玉溪市| 锡林浩特市| 四会市| 东乌珠穆沁旗| 新竹县| 津市市| 泽库县| 荆州市| 民勤县| 壶关县| 禄劝| 磐安县| 溆浦县| 库车县| 宝应县| 邵东县|