校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 詳解Go開發Struct轉換成map兩種方式比較

詳解Go開發Struct轉換成map兩種方式比較

熱門標簽:惠州電銷防封電話卡 汕頭小型外呼系統 黃岡人工智能電銷機器人哪個好 阿里云ai電話機器人 濱州自動電銷機器人排名 建造者2地圖標注 浙江高頻外呼系統多少錢一個月 鄭州亮點科技用的什么外呼系統 釘釘有地圖標注功能嗎

最近做Go開發的時候接觸到了一個新的orm第三方框架gorose,在使用的過程中,發現沒有類似beego進行直接對struct結構進行操作的方法,有部分API是通過map進行數據庫相關操作,那么就需要我們把struct轉化成map,下面是是我嘗試兩種不同struct轉換成map的方法

mport (
  "encoding/json"
  "fmt"
  "reflect"
  "time"
)

type Persion struct {
  Id    int
  Name   string
  Address string
  Email  string
  School  string
  City   string
  Company string
  Age   int
  Sex   string
  Proviece string
  Com   string
  PostTo  string
  Buys   string
  Hos   string
}

func main() {
  StructToMapViaJson()
  //StructToMapViaReflect()
}

func StructToMapViaJson() {
  m := make(map[string]interface{})
  t := time.Now()
  person := Persion{
    Id:    98439,
    Name:   "zhaondifnei",
    Address: "大沙地",
    Email:  "dashdisnin@126.com",
    School:  "廣州第十五中學",
    City:   "zhongguoguanzhou",
    Company: "sndifneinsifnienisn",
    Age:   23,
    Sex:   "F",
    Proviece: "jianxi",
    Com:   "廣州蘭博基尼",
    PostTo:  "藍鯨XXXXXXXX",
    Buys:   "shensinfienisnfieni",
    Hos:   "zhonsndifneisnidnfie",
  }
  j, _ := json.Marshal(person)
  json.Unmarshal(j, m)
  fmt.Println(m)
  fmt.Println(time.Now().Sub(t))
}

一、通過struct轉json,json轉成map

func StructToMapViaJson() {
  m := make(map[string]interface{})
  t := time.Now()
  person := Persion{
    Id:    98439,
    Name:   "zhaondifnei",
    Address: "大沙地",
    Email:  "dashdisnin@126.com",
    School:  "廣州第十五中學",
    City:   "zhongguoguanzhou",
    Company: "sndifneinsifnienisn",
    Age:   23,
    Sex:   "F",
    Proviece: "jianxi",
    Com:   "廣州蘭博基尼",
    PostTo:  "藍鯨XXXXXXXX",
    Buys:   "shensinfienisnfieni",
    Hos:   "zhonsndifneisnidnfie",
  }
  j, _ := json.Marshal(person)
  json.Unmarshal(j, m)
  fmt.Println(m)
  fmt.Printf("duration:%d", time.Now().Sub(t))
}

output:
map[Proviece:jianxi Com:廣州蘭博基尼 Hos:zhonsndifneisnidnfie Name:zhaondifnei Company:sndifneinsifnienisn Buys:shensinfienisnfieni Age:23 PostTo:藍鯨XXXXXXXX Address:大沙地 School:廣州第十五中學 City:zhongguoguanzhou Sex:F Id:98439 Email:dashdisnin@126.com]
duration:250467

二、通過反射形式生成map

func StructToMapViaReflect() {
  m := make(map[string]interface{})
  t := time.Now()
  person := Persion{
    Id:    98439,
    Name:   "zhaondifnei",
    Address: "大沙地",
    Email:  "dashdisnin@126.com",
    School:  "廣州第十五中學",
    City:   "zhongguoguanzhou",
    Company: "sndifneinsifnienisn",
    Age:   23,
    Sex:   "F",
    Proviece: "jianxi",
    Com:   "廣州蘭博基尼",
    PostTo:  "藍鯨XXXXXXXX",
    Buys:   "shensinfienisnfieni",
    Hos:   "zhonsndifneisnidnfie",
  }
  elem := reflect.ValueOf(person).Elem()
  relType := elem.Type()
  for i := 0; i  relType.NumField(); i++ {
    m[relType.Field(i).Name] = elem.Field(i).Interface()
  }
  fmt.Println(m)
  fmt.Printf("duration:%d", time.Now().Sub(t))
}

output:
map[Buys:shensinfienisnfieni Name:zhaondifnei City:zhongguoguanzhou Sex:F Proviece:jianxi Com:廣州蘭博基尼 Id:98439 School:廣州第十五中學 Address:大沙地 Age:23 PostTo:藍鯨XXXXXXXX Hos:zhonsndifneisnidnfie Email:dashdisnin@126.com Company:sndifneinsifnienisn]
duration:104239

結論

通過比較可以看出,通過反射的形式轉換基本上是通過json形式轉換的兩倍。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • golang struct 實現 interface的方法
  • golang中struct和interface的基礎使用教程
  • 淺談Go語言中的結構體struct & 接口Interface & 反射
  • 詳解Angular之constructor和ngOnInit差異及適用場景
  • 詳解Angular 中 ngOnInit 和 constructor 使用場景
  • golang struct擴展函數參數命名警告解決方法
  • 解析Go語言編程中的struct結構
  • Golang學習筆記(六):struct
  • Go語言中struct的匿名屬性特征實例分析
  • Go語言struct類型介紹
  • Go語言struct類型詳解

標簽:滄州 晉中 泰安 駐馬店 阿壩 昭通 瀘州 東營

巨人網絡通訊聲明:本文標題《詳解Go開發Struct轉換成map兩種方式比較》,本文關鍵詞  詳解,開發,Struct,轉,換成,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Go開發Struct轉換成map兩種方式比較》相關的同類信息!
  • 本頁收集關于詳解Go開發Struct轉換成map兩種方式比較的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 自贡市| 乐山市| 理塘县| 巴里| 库伦旗| 离岛区| 墨竹工卡县| 大化| 南汇区| 邓州市| 从江县| 会东县| 广汉市| 静安区| 邮箱| 长白| 静安区| 广平县| 涿州市| 建平县| 图片| 普宁市| 巩留县| 枣阳市| 乐亭县| 江门市| 池州市| 五台县| 武陟县| 皋兰县| 城固县| 胶州市| 聂拉木县| 藁城市| 潜江市| 阿图什市| 新沂市| 介休市| 循化| 梓潼县| 彰武县|