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语言包和包管理详解

    这篇文章主要为大家介绍了Go语言包和包管理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 详解Go 1.22 for循环的两处重要更新

    详解Go 1.22 for循环的两处重要更新

    这篇文章主要详细介绍了Go 1.22 for循环的两处重要更新,Go 1.22 版本于 2024 年 2 月 6 日发布,引入了几个重要的特性和改进,在语言层面上,这个版本对 for 循环进行了两处更新,本文将会对 for 循环的两个更新进行介绍,需要的朋友可以参考下
    2024-02-02
  • 深入理解golang chan的使用

    深入理解golang chan的使用

    本文主要介绍了golang chan的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Go实现凯撒密码加密解密

    Go实现凯撒密码加密解密

    这篇文章主要为大家介绍了Go实现凯撒密码加密解密示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Go如何在HTTP请求中操作cookie教程详解

    Go如何在HTTP请求中操作cookie教程详解

    这篇文章主要为大家介绍了Go如何在HTTP请求中操作cookie教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Go1.18新特性之泛型使用三步曲(小结)

    Go1.18新特性之泛型使用三步曲(小结)

    本文主要介绍了Go1.18新特性之泛型,是Go1.18的新特性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • ​​​​​​​Golang实现RabbitMQ中死信队列几种情况

    ​​​​​​​Golang实现RabbitMQ中死信队列几种情况

    本文主要介绍了​​​​​​​Golang实现RabbitMQ中死信队列几种情况,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Golang channle管道的基本使用及快速入门

    Golang channle管道的基本使用及快速入门

    管道是Go语言中实现并发的一种方式,它可以在多个goroutine之间进行通信和数据交换,本文主要介绍了Golang channle管道的基本使用及快速入门,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Golang排序和查找使用方法介绍

    Golang排序和查找使用方法介绍

    排序操作和查找一样是很多程序经常使用的操作。尽管一个最短的快排程序只要15行就可以搞定,但是一个健壮的实现需要更多的代码,并且我们不希望每次我们需要的时候都重写或者拷贝这些代码
    2022-12-12
  • Golang编译器介绍

    Golang编译器介绍

    今天小编就为大家分享一篇关于go语言编译器的介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-09-09

最新评论