golang编程的一些小技巧

interface{}转slice

switch arg.Command {
	case "MultiExtractFeatureByFileName":
		data, b := (arg.Data).([]interface{}) // 先转成[]interface{}
		if !b {
			msg := ecode.RequestErr
			res := ResDevice{
				Command: arg.Command,
				Code:    msg.Code(),
				Data:    msg.Message(),
			}
			jsons, _ := json.Marshal(res)
			client.Send(jsons)
			return nil
		}

		var fileName []string
		for _, v := range data { 
			fileName = append(fileName, v.(string)) // 然后转成[]string
		}

gin框架调试请求

// 使用中间件调试body数据
engine.Use(func(c *gin.Context) {
	data, err := c.GetRawData()
	if err != nil {
		fmt.Println(err.Error())
	}
	fmt.Printf("data: %v\n", string(data))

	c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(data))
	c.Next()
})

// 把解码出的数据重组成json,分别对比传过来的字段
func EditTemplate(c *gin.Context) {
	var arg v1.ReqEditTemplate
	if err := c.Bind(&arg); err != nil {
		c.JSON(ecode.GinRes(nil, ecode.RequestErr))
		return
	}

	data, _ := json.Marshal(arg)
	fmt.Println(string(data))

	if _, err := govalidator.ValidateStruct(arg); err != nil {
		c.JSON(ecode.GinRes(nil, ecode.RequestErr))
		return
	}
	err := srv.EditTemplate(c, &arg)
	c.JSON(ecode.GinRes(nil, err))
	return
}

http下载文件命名的根据

objectName := "your file name"
header("Content-Disposition", `attachment; filename=`+objectName)

全局map

package  main 

import (
	"xxxxx"
)

// 可以用作宏定义
var bucketName2classify = map[string]int{
	"ping":    pong,
}

func main() {

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值