golang获取用户输入的几种方式

 更新时间:2024年01月17日 09:23:04   作者:余生逆风飞翔  
这篇文章给大家介绍了golang获取用户输入的几种方式,文中通过代码示例给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友跟着小编一起来学习吧

一、定义结构体

type UserInfo struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
    Add  string `json:"add"`
}

type ReturnData struct {
    Message string   `json:"message"`
    Status  string   `json:"status"`
    Data    UserInfo `json:"data"`
}

二、get请求的Query方法

func getBindUser(c *gin.Context) {
    //query用来获取用户输入的参数
    name := c.Query("name")
    //用来转换用户输入的参数为数字
    age, _ := strconv.Atoi(c.Query("age"))
    //用来获取用户输入的参数,并设置默认值为 "上海"
    add := c.DefaultQuery("add", "上海")
    //结构体实例化后与用户输入参数绑定
    userinfo := UserInfo{
        Name: name,
        Age:  age,
        Add:  add,
    }
    //结构体实例化并接收用户输入的参数进行绑定,实例化有两种方式,下面注释的算一种,未注释的是另一种
    // returnData := make(map[string]interface{})
    returnData := ReturnData{}
    returnData.Message = "加载配置成功!"
    returnData.Status = "200"
    returnData.Data = userinfo
    c.JSON(http.StatusOK, returnData)
    fmt.Println(returnData)
}

三、post请求

1.获取用户输入参数的方法,并直接绑定到json格式

func returnDataBindUser(c *gin.Context) {
    userInfo := UserInfo{}
    if err := c.ShouldBindJSON(&userInfo); err != nil {
        c.JSON(http.StatusOK, gin.H{
            "messages": "加载配置失败!",
            "status":   500,
        })
        fmt.Println("参数传递失败。。。", err.Error())
    } else {
        c.JSON(http.StatusOK, userInfo)
        fmt.Printf("姓名:%s\n年龄:%d\n地址:%s\n", userInfo.Name, userInfo.Age, userInfo.Add)
    }
}

2.第二种方式就是用formdata,此函数用from-data方式获取

四、设置token获取

这儿设置一下token的获取,并为用jwt方式,只是通过用户输入任意字符来判断是否带有token用来做个测试这个功能的安全是否成功

func glbloTokenIsNo(c *gin.Context) {
    //这块儿是用户输入的任意字符当做token,脚本架部分会用到jwt
    token := c.Query("token")
    //这块儿会判断是否为空串,字符串要用空串判断,数字才可以用!=nil判断
    if token == "" {
        returnData := ReturnData{
            Message: "获取token失败!",
            Status:  "401",
        }
        c.JSON(http.StatusOK, returnData)
    }
    c.String(200, "登录成功!")
}

五、路由分组

注:开始不懂为什么要分组,后来明白了,分组主不是用来管理路由,比如:你的访问url特别长,像/api/user/addUser/和/api/user/deleteUser这两个就可以将/api/app分为一组

apiGroup := r.Group("/api/user")

使用的时候就可以写成如下这样

//这样apiGroup就代表/api/user了
apiGroup.POST("/addUser", returnDataBindUser)

以上就是golang获取用户输入的几种方式的详细内容,更多关于golang获取用户输入的资料请关注脚本之家其它相关文章!

相关文章

  • Go语言实现配置热加载的方法分享

    Go语言实现配置热加载的方法分享

    web项目,经常需要热启动各种各样的配置信息,一旦这些服务发生变更,我们需要重新启动web server,以使配置生效,实现配置热加载,本文为大家整理了几个方法实现这个需求,需要的可以参考下
    2023-05-05
  • Go 内联优化让程序员爱不释手

    Go 内联优化让程序员爱不释手

    这篇文章主要介绍了Go 内联优化让程序员爱不释手,内联是在编译过程中自动进行的一类基本优化之一,文章围绕主题展开更多详细介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • 7分钟读懂Go的临时对象池pool以及其应用场景

    7分钟读懂Go的临时对象池pool以及其应用场景

    这篇文章主要给大家介绍了关于如何通过7分钟读懂Go的临时对象池pool以及其应用场景的相关资料,文中通过示例代码介绍的非常详细,对大家学习或使用Go具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-11-11
  • 轻松构建Go应用的Dockerfile

    轻松构建Go应用的Dockerfile

    本文介绍了如何制作一个用于构建和运行Go应用程序的Docker镜像的Dockerfile的相关资料,需要的朋友可以参考下
    2023-10-10
  • Golang错误处理方式异常与error

    Golang错误处理方式异常与error

    我们在使用Golang时,不可避免会遇到异常情况的处理,与Java、Python等语言不同的是,Go中并没有try...catch...这样的语句块,这个时候我们如何才能更好的处理异常呢?本文来教你正确方法
    2023-01-01
  • 基于Golang实现内存数据库的示例详解

    基于Golang实现内存数据库的示例详解

    这篇文章主要为大家详细介绍了如何基于Golang实现内存数据库,文中的示例代码讲解详细,具有一定的借鉴价值,需要的小伙伴可以参考一下
    2023-03-03
  • 谈谈对Golang IO读写的困惑

    谈谈对Golang IO读写的困惑

    这篇文章主要介绍了谈谈对Golang IO读写的困惑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • GO语言中创建切片的三种实现方式

    GO语言中创建切片的三种实现方式

    这篇文章主要介绍了GO语言中创建切片的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Go语言中乐观锁与悲观锁的具体使用

    Go语言中乐观锁与悲观锁的具体使用

    乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题,本文主要介绍了Go语言中乐观锁与悲观锁的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • sublime3+Golang+代码补全的实现

    sublime3+Golang+代码补全的实现

    本文主要介绍了sublime3+Golang+代码补全的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论