第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Go 中使用清晰的結(jié)構(gòu)值優(yōu)化性能?

如何在 Go 中使用清晰的結(jié)構(gòu)值優(yōu)化性能?

Go
瀟湘沐 2021-07-26 09:26:43
我的 API 服務(wù)器接受 post 請求,請求正文是 JSON,所以我創(chuàng)建了兩個 struct 對象來接受 JSON 字符串并將其持久化到數(shù)據(jù)庫中。但是每次我接受請求時,我都需要一遍又一遍地創(chuàng)建 struct 對象,我嘗試清除結(jié)構(gòu)而不是重新創(chuàng)建它。演示代碼如下://The two structtype Card struct {  Number string  Type   string}type Person struct {  Name string  Cards []Card}var p Person//parse JSON to the struct objectfunc init() {  str := `{"name":"aaa","cards":[{"number":"1","type":"visa"},{"number":"2","type":"mastercard"}]}`  json.Unmarshal([]byte(str), &p)}func PersistToDatabase() {  var err error  tx, err := db.Begin()  if err != nil {    return  }  defer func() {    if err != nil && tx != nil {      if err := tx.Rollback(); err != nil {        return      }    }  }  finish := make(chan bool)  stmt1, err := tx.Prepare(`insert into tb1(name) values(?)`)  if err != nil {    panic(err.Error())  }  defer stmt1.Close()  stmt2, err := tx.Prepare(`insert into tb2(name, num, type) values(?, ?, ?)`)  if err != nil {    panic(err.Error())  }  defer stmt2.Close()  go func() {    defer func() { finish <- true }()    if _, err = stmt1.Exec(p.name); err != nil {      log.Println("stmt1.Exec: ", err.Error())      return    }    for _, x := range p.Cards {      if _, err = stmt2.Exec(p.name, x.Number, x.Type); err != nil {        log.Println("stmt2.Exec: ", err.Error())          return      }    }  }  <-finish  //clear struct object  p.Name = ""  p.Cards = nil //have anything do this better?}在代碼底部,我清除了 Name 元素,但讓 Cards 元素成為了nil,我該如何做得更好?我的數(shù)據(jù)庫操作有問題嗎?
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號