前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Golang语言 Gin框架环境配置、报错处理、接口调用、配置和日志管理|Go主题月

Golang语言 Gin框架环境配置、报错处理、接口调用、配置和日志管理|Go主题月

作者头像
微芒不朽
发布于 2022-09-13 02:02:49
发布于 2022-09-13 02:02:49
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

安装:

下载并安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go get -u github.com/gin-gonic/gin

安装失败的话,直接打开 github.com/gin-gonic/gin,下载压缩包,并在GOPATH路径的src目录下面建立github.com,解压到这个目录下面;

遇到的报错信息:

Go 项目编译:cannot find package "." in:*******

将缺少依赖的包重新安装一次即可解决问题。

go: inconsistent vendoring in xxx报错

修改GOPAHT,改到非GOROOT路径。GOROOT是GO语言安装路径,GOPATH是GO语言编译环境所需路径,因此二者不能为同一路径

新建项目

GOPATH目录下面的src下面新建一个文件夹app,使用命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go mod init

新建 main.go,写出我们的第一个程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main
import "github.com/gin-gonic/gin"

func main() {
 r := gin.Default()
 r.GET("/", func(c *gin.Context) {
  c.JSON(200, gin.H{
   "name": "叫我詹躲躲",
   "gend": "男",
  })
 })
 r.Run(":8080")
}

运行程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go run main.go

浏览器运行:

生成JSON

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func AsciiJSON() {
 r := gin.Default()
 r.GET("/", func(c *gin.Context) {
  c.JSON(200, gin.H{
   "name": "叫我詹躲躲",
   "gend": "男",
  })
 })
 r.Run(":8080")
}

调用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main
import (
 "app/function"
 "github.com/gin-gonic/gin"
)

func main() {
 //使用AsciiJSON生成带有转义的非ASCII字符的纯ASCII JSON。
 function.AsciiJSON()
}

测试get请求

绑定表单数据请求与自定义结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//绑定表单数据请求与自定义结构
type StructA struct {
 FieldA string `form:"field_a"`
}
type StructB struct {
 NestedStruct StructA
 FieldB       string `form:"field_b"`
}

//get请求
func GetFormData(c *gin.Context) {
 var b StructB
 c.Bind(&b)
 c.JSON(200, gin.H{
  "a": b.NestedStruct,
  "b": b.FieldB,
 })
}

调用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main
import (
 "app/function"
 "github.com/gin-gonic/gin"
)

func main() {
 //将表单数据请求与自定义结构绑定
 r := gin.Default()
 //测试get请求
 r.GET("/getFormData", function.GetFormData)
 r.Run()
}

查询返回信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//绑定查询字符串或发布数据
type PersonInfo struct {
 Name    string `form:"name"`
 Address string `form:"address"`
 Memo    string `form:"memo"`
}

//返回信息
func QueryInfo(c *gin.Context) {
 var person PersonInfo
 if c.ShouldBind(&person) == nil {
  log.Println(person.Name)
  log.Println(person.Address)
  log.Println(person.Memo)
 }
 c.String(200, "Success")
}

调用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main
import (
 "app/function"
 "github.com/gin-gonic/gin"
)

func main() {
 r := gin.Default()
 //查询返回信息
 r.GET("/queryInfo", function.QueryInfo)
 r.Run()
}

自定义HTTP配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http.ListenAndServe(":8080", router)
或者
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
s := &http.Server{
 Addr:           ":8080",
 Handler:        router,
 ReadTimeout:    10 * time.Second,
 WriteTimeout:   10 * time.Second,
 MaxHeaderBytes: 1 << 20,
}
s.ListenAndServe()

自定义日志文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
router := gin.New()
router.Use(gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string {
 return fmt.Sprintf("%s - [%s] \"%s %s %s %d %s \"%s\" %s\"\n",
   param.ClientIP,
   param.TimeStamp.Format(time.RFC1123),
   param.Method,
   param.Path,
   param.Request.Proto,
   param.StatusCode,
   param.Latency,
   param.Request.UserAgent(),
   param.ErrorMessage,
 )
}))
router.Use(gin.Recovery())
router.GET("/ping", func(c *gin.Context) {
 c.String(200, "pong")
})
router.Run(":8080

参考文档

1.解决GO语言安装air框架时遇到go: inconsistent vendoring问题 2.Glide cannot find package “.” in 3.warning: GOPATH set to GOROOT (/usr/local/go) has no effect 4.gin官方文档 5.Gin框架中文文档6.Go 不同文件之间的引用

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叫我詹躲躲 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Kaggle泰坦尼克号船难--逻辑回归预测生存率
(三)需要的库:numpy + pandas + matplotlib + sklearn Win 10安装numpy、pandas、scipy、matplotlib和sklearn Win 10系统matplotlib中文无法显示的解决方案
海天一树
2018/07/25
3.5K0
Kaggle泰坦尼克号船难--逻辑回归预测生存率
强烈推荐!分享一个持续连载的《特征工程小锦囊》项目,代码已开源!
随着我们在机器学习、数据建模、数据挖掘分析这条发展路上越走越远,其实越会感觉到特征工程的重要性,平时我们在很多地方都会看到一些很好的特征工程技巧,但是都会是一个完整项目去阅读,虽然说这样子也可以学习挖掘思路,但有的时候浓缩的技巧总结也是十分重要!
Sam Gor
2020/02/16
5630
强烈推荐!分享一个持续连载的《特征工程小锦囊》项目,代码已开源!
Kaggle赛题解析:逻辑回归预测模型实现
作者: 寒小阳 &&龙心尘 原文:http://blog.csdn.net/han_xiaoyang/article/details/49797143 Kaggle是一个数据分析建模的应用竞赛平台,有点类似KDD-CUP(国际知识发现和数据挖掘竞赛),企业或者研究者可以将问题背景、数据、期望指标等发布到Kaggle上,以竞赛的形式向广大的数据科学家征集解决方案。而热爱数(dong)据(shou)挖(zhe)掘(teng)的小伙伴们可以下载/分析数据,使用统计/机器学习/数据挖掘等知识,建立算法模型,
机器学习AI算法工程
2018/03/13
9740
Kaggle赛题解析:逻辑回归预测模型实现
python多图表显示在一张图
python多图表显示在一张图 # 导入相关库 import pandas as pd import numpy as np from pandas import Series,DataFrame # 导入泰坦尼的数据集 data_train = pd.read_csv("./data/titanic/Train.csv") data_train.head() import matplotlib.pyplot as plt # 设置figure_size尺寸 plt.rcParams['figure.
AI拉呱
2021/01/14
1.1K0
机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾
作者: 寒小阳 时间:2015年11月。 出处:http://blog.csdn.net/han_xiaoyang/article/details/49797143 声明:版权所有,转载请注明出处,谢谢。
全栈程序员站长
2022/09/27
5190
【Kaggle入门级竞赛top5%排名经验分享】— 分析篇
Kaggle作为公认的数据挖掘竞赛平台,有很多公开的优秀项目,而其中作为初学者入门的一个好的项目就是:泰坦尼克号生还者预测。
Python数据科学
2018/08/06
9331
【Kaggle入门级竞赛top5%排名经验分享】— 分析篇
Kaggle经典数据分析项目:泰坦尼克号生存预测!
最近有很多读者留言,希望能有一个完整的数据分析项目练手,这几天收集了组织成员们的推荐。其中泰坦尼克号生存预测作为最经典的启蒙数据分析项目,对于初学者来说是应该是最合适的了,后面将分享更多进阶的数据分析项目。如果已经有基础了,推荐:
Datawhale
2020/08/28
2.7K0
Kaggle经典数据分析项目:泰坦尼克号生存预测!
特征锦囊:怎么把几个图表一起在同一张图上显示?
未来几个特征锦囊的内容会使用泰坦尼克号的数据集,大家可以在下面的链接去下载数据哈。
Sam Gor
2020/01/15
6410
特征锦囊:怎么把几个图表一起在同一张图上显示?
经典永不过时的句子_网红的成功案例分析
本周给大家分享的数据分析案例是泰坦尼克号幸存者预测的项目,没记错的话,这应该是很多朋友写在简历上的项目经历。如果你目前正在找工作,自身缺少项目经历并且想要充实项目经历的话,可以考虑一下这个项目!
全栈程序员站长
2022/11/01
8150
基于Python的Titannic数据可视化
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } <pre><code>.dataframe thead th { text-align: right; } </code></pre>
皮大大
2021/03/02
4180
泰坦尼克号幸存预测
本次项目主要围绕Kaggle上的比赛题目: "给出泰坦尼克号上的乘客的信息, 预测乘客是否幸存" 进行数据分析
py3study
2020/01/20
1.2K0
Kaggle Titanic 生存预测比赛超完整笔记(上)
一直想在Kaggle上参加一次比赛,奈何被各种事情所拖累。为了熟悉一下比赛的流程和对数据建模有个较为直观的认识,断断续续用一段时间做了Kaggle上的入门比赛:Titanic: Machine Learning from Disaster。 总的来说收获还算是挺大的吧。本来想的是只简单的做一下,在整个进行的过程中发现有很多好的Kernels以及数据分析的流程和方法,但是却鲜有比较清晰直观的流程和较为全面的分析方法。所以,本着自己强迫症的精神,同时也算对这次小比赛的一些方式方法以及绘图分析技巧做一个较为系统的
AI研习社
2018/03/16
2.9K0
Kaggle Titanic 生存预测比赛超完整笔记(上)
特征锦囊:怎么对满足某种条件的变量修改其变量值?
未来几个特征锦囊的内容会使用泰坦尼克号的数据集,大家可以在下面的链接去下载数据哈。
Sam Gor
2020/01/15
6810
特征锦囊:怎么对满足某种条件的变量修改其变量值?
肝了3天,整理了50个Pandas高频使用技巧,强烈建议收藏!
今天小编来分享在pandas当中经常会被用到的方法,篇幅可能有点长但是提供的都是干货,读者朋友们看完之后也可以点赞收藏,相信会对大家有所帮助,大致本文会讲述这些内容
用户6888863
2021/10/28
1.3K0
肝了3天,整理了50个Pandas高频使用技巧,强烈建议收藏!
经典中的经典--泰坦尼克号的乘客生存预测
数据分析/挖掘是以概率论、线性代数、统计学、信息论为基础,根据之前接触到的数据挖掘流程,可定义为:数据准备-->数据探索--> 数据预处理-->特征工程-->模型建立-->模型评估,其中数据探索、数据预处理、特征工程针对某一属性同时进行。
数据社
2020/05/25
2.2K0
特征锦囊:常用的统计图在Python里怎么画?
这里的话我们介绍几种很简单但也很实用的统计图绘制方法,分别有条形图、饼图、箱体图、直方图以及散点图,关于这几种图形的含义这边就不多做解释了。
Sam Gor
2020/01/02
7430
特征锦囊:如何利用字典批量修改变量值?
这里我们假设有这么一种情况,一个字段里的变量值,需要把某几个变量值修改为同一个值,然后其他几个变量值修改为另外一个,那么我们有什么简单的办法可以完成呢?这边,我推荐一个字典映射的办法!
Sam Gor
2020/01/15
8500
特征锦囊:如何利用字典批量修改变量值?
数据分析小技巧第七集:快速清洗、定位最关键特征
我正在按照下面施工计划往前推进,标记小红旗部分已经讲完,你可以从这里:施工专题已完成 60 篇 汇总 找到过往推送文章
double
2021/01/06
3610
数据分析小技巧第七集:快速清洗、定位最关键特征
python 数据分析超简单入门 : 项目实践篇
刘妍
2017/09/12
6.4K2
python 数据分析超简单入门 : 项目实践篇
【Kaggle入门级竞赛top5%排名经验分享】— 建模篇
上一篇是数据挖掘的前戏,主要目的是认识数据特征、判断特征重要性、观察数据异常,掌握数据间联系。本篇将继续上一篇分析进行数据挖掘建模部分。
Python数据科学
2018/08/06
5821
【Kaggle入门级竞赛top5%排名经验分享】— 建模篇
推荐阅读
相关推荐
Kaggle泰坦尼克号船难--逻辑回归预测生存率
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 安装:
  • 遇到的报错信息:
  • 新建项目
  • 生成JSON
  • 调用
  • 测试get请求
    • 调用
    • 查询返回信息
    • 调用
    • 自定义HTTP配置
      • 或者
  • 自定义日志文件
    • 参考文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档