zoukankan      html  css  js  c++  java
  • go语言 golang框架 gin框架使用

    前言:接触了golang很长时间,大多都是在百度上查看各种关于go语言的教程,各种类型的教程,可能是因为不太走心,所以总是出现今天看,明天忘得情况,恰逢自己想做个网站,所以,顺坡下驴就用go语言写一些接口,以下阐述下我在使用的过程中出现的问题,供大家参考

    使用框架:gin+gorm

    问题一:数据类型转换,数据类型不同导致MySQL索引不能使用

    在执行查询的时候,我的数据库表字段type为int类型,根据前端传值过来类型的值做where查询,但是我打印sql之后去MySQL中explain 发现,索引没有使用,分析了下原因发现,接收到的参数值类型为string,但是数据库中的字段类型为int所以问题来了怎么把string转为int

    解决方法:使用第三方类  import 引入 "strconv"

    具体执行:

    var typeId, err = strconv.Atoi(c.Query("type_id"))
        if err != nil {
            c.JSON(200, gin.H{"code": 500, "status": "error", "message":err})
            return
        }
    问题二:查询中定义结构,但是返回结果集中出现不需要返回的字段,实现过滤返回结果集中的无效字段
    实际问题,我定义了结构体struct 其中包括image_path字段,但是数据库中的存储类型是json,因为是多张图片,但是前端需要的是数组格式,所以这个时候存在的问题是,将json转数组,并且删除image_path
    解决问题一:json装为数组
    定义新的变量 类型为切片 var ImagePath []string
    然后使用  json.Unmarshal([]byte(v.ImagePath), &ImagePath)其中v.ImagePath为你的变量名
    下面我们看一下结构体
    type MoreImage struct {
        Id        string `json:"id"`
        Title     string `json:"title"`
        ImagePath string `json:"-"`
        Path      []string
    }
    当我们将json转为数组之后,可能会有一个想法就是把数组在赋值给image_path,当初我也是这么想的,但是问题是我们在结构体中已经定义了image_path的类型为string,所以我们不能直接复制,所以很明显,我定义一个新的字段path,并且类型为切片,这样就可以将数组赋值给path从而做到,返回给前端的结果集为数组
    解决问题二:过滤不需要出现在结果集中的字段
    同样的我们看上面的结构体在ImagePath 类型处,我使用的是json:-这样的含义就是该字段不进行序列化,这个用法大家可以百度一下golang中的jsontag的用法,会有对应的详解,在此我就不多缀述哈,在经过json:-的处理之后该字段就不会显示出来了
    以上是我在使用gin时候遇到的问题,后面会持续补充,不足之处,大家多多指正
     
     
  • 相关阅读:
    小白学 Python 数据分析(21):pyecharts 好玩的图表(系列终篇)
    小白学 Python 数据分析(20):pyecharts 概述
    小白学 Python 数据分析(19):Matplotlib(四)常用图表(下)
    小白学 Python 数据分析(18):Matplotlib(三)常用图表(上)
    在 ASP.NET Core 程序启动前运行你的代码
    在 ASP.NET Core 项目中使用 MediatR 实现中介者模式
    在 ASP.NET Core 项目中使用 AutoMapper 进行实体映射
    [Vue 牛刀小试]:第十七章
    或许是你应该了解的一些 ASP.NET Core Web API 使用小技巧
    [Vue 牛刀小试]:第十六章
  • 原文地址:https://www.cnblogs.com/mzli/p/14212753.html
Copyright © 2011-2022 走看看