GoWeb开发有很多框架,如Beego、Gin、Revel、Echo、IRis等,学习框架可以快速做开发,对比常见goweb框架,通过其github的活跃度,维护的team,生产环境中的使用率以及师兄的推荐,个人选择了学习Gin这个轻巧框架。

1. Gin框架简介

Gin是一个golang的微框架,基于 httprouter,封装比较优雅,API友好,源码注释比较明确。具有快速灵活,容错率高,高性能等特点。框架更像是一些常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。

Gin 包括以下几个主要的部分:

  • 设计精巧的路由/中间件系统;
  • 简单好用的核心上下文 Context;
  • 附赠工具集(JSON/XML 响应, 数据绑定与校验等)。

Gin 是一个 Golang 写的 web 框架,,它提供了类似martini但更好性能(路由性能约快40倍)的API服务。

官方地址:https://github.com/gin-gonic/gin

2. 安装Gin

打开终端,输入以下命令:

go get -u github.com/gin-gonic/gin

此过程可能巨慢,可使用代理,解决办法如下:

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct

安装完成后可以看到gopath的pkg目录下多了一些包:

此时github.com里面的包还是用不了的,解决办法如下:

  go mod init gingo mod edit -require github.com/gin-gonic/gin@latest

使用时要导入包:

import "github.com/gin-gonic/gin"

3. Gin框架的简单应用

3.1 程序代码

创建一个项目ginhello,新建一个go文件(ginhello.go):

package mainimport ("github.com/gin-gonic/gin""net/http"
)func main() {router := gin.Default()router.GET("/", func(c *gin.Context) {c.String(http.StatusOK, "My first gin program.")})router.Run(":8000")
}

1、router:=gin.Default():这是默认的服务器。使用gin的Default方法创建一个路由Handler;
2、然后通过Http方法绑定路由规则和路由函数。不同于net/http库的路由函数,gin进行了封装,把request和response都封装到了gin.Context的上下文环境中;
3、最后启动路由的Run方法监听端口。也可以用http.ListenAndServe(":8080", router),或者自定义Http服务器配置。

下面看下Run方法的实现:

func (engine *Engine) Run(addr ...string) (err error) {defer func() { debugPrintError(err) }()address := resolveAddress(addr)debugPrint("Listening and serving HTTP on %s\n", address)err = http.ListenAndServe(address, engine)return
}

使用gin框架简单几行代码,就能实现一个web服务。使用gin的Default方法创建一个路由handler。然后通过HTTP方法绑定路由规则和路由函数。不同于net/http库的路由函数,gin进行了封装,把request和response都封装到gin.Context的上下文环境。最后是启动路由的Run方法监听端口。除了GET方法,gin也支持POST,PUT,DELETE,OPTION等常用的restful方法。

3.2 运行结果

执行以下命令:

go run gin_hello.go

运行结果如下:

打开浏览器也可以看结果:

go语言学习(二)——Gin 框架简介相关推荐

  1. Go语言学习笔记—golang基础简介

    视频来源:B站<golang入门到项目实战 [2022最新Go语言教程,没有废话,纯干货!]> 文章为自己整理的学习笔记,侵权即删,谢谢支持! 文章目录 一.Go语言简述 二.Go语言特点 ...

  2. R语言学习二——工具的使用

    R语言学习(二) 本章学习R语言相关开发工具的使用: 软件下载 软件安装 RStudio的使用 R扩展包的安装与载入 容易遇到的问题 一.软件下载(RStudio) Rstudio下载地址 选择免费版 ...

  3. Go语言学习二 语言结构 基础语法 数据类型

    Go 语言结构 由 youj 创建, 最后一次修改 2015-09-08 Go 语言结构 在我们开始学习 GO 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构. Go Hello ...

  4. Swift语言学习(二)

    原文链接:http://www.ioswift.org/ 4.0.Swift指南 以上章节主要从整体上介绍了 Swift 的相关知识,从本章开始,我们一步一步学习 Swift ,正式开启 Swift ...

  5. C语言学习二:VS的使用

    Visual Studio环境 VS是Visual Studio,它是微软提供的一个工具集,由各种各样的工具组成.VS可以支持C/C++.VB.JAVA.C#编程.然了一次只能支持一种编程方式.在VS ...

  6. SQL语言之DQL语言学习(二)条件查询

    查询后并拼接字段 主要利用Concat( , )拼接函数; SELECT CONCAT(last_name,first_name) AS 姓名 from employees; 条件查询语法 selec ...

  7. Go语言学习 二十一 内嵌

    本文最初发表在我的个人博客,查看原文,获得更好的阅读体验 在像Java这种语言中,有子类(或者继承)的概念,通过继承复用已有的功能或属性,与继承不同,Go中使用组合的方式来完成已有实现的复用,这种做法 ...

  8. Go语言学习 二十三 错误处理和运行时恐慌(Panic)

    本文最初发表在我的个人博客,查看原文,获得更好的阅读体验 一 错误 1.1 error类型 按照约定,Go中的错误类型为error,这是一个内建接口,nil值表示没有错误: type error in ...

  9. C语言学习 二维数组行列互换

    二维数组行列互换 Description 将一个二维数组的行和列元素互换,存放到另一个二维数组中. Input 第一行输入两个整数m和n分别表示二维数组的行数和列数(均小于20). 下一行输入该二维数 ...

最新文章

  1. ​纳米孔测序揭示冻土冻融对土壤微生物群落变化的影响
  2. HAProxy Keepalived L4-L7 高可用负载均衡解决方案
  3. spring的HibernateDaoSupport以及HibernateTemplate和jdbcTemplate的选择问题
  4. 防沉迷人脸识别可以扫照片吗_人脸识别的智能门锁到底安不安全?用照片可以打开是真的吗?...
  5. android xml获取指定,android:如何从xml文件中获取信息?
  6. Git 忽略编译后文件
  7. STM32F103单片机ADC功能使用
  8. vi 命令 使用方法
  9. 机智云产品、功能、服务一览表
  10. 【七】zuul路由网关
  11. Mac 不能进入睡眠模式,如何修复?
  12. std::thread的常用参数传递总结
  13. Julia : SharedArrays与@async比快
  14. 证监会行业分类代码对照表(2001+2012年)
  15. 偏最小二乘法与最小二乘法的区别
  16. 包装严重的IT行业,作为面试官,我是如何甄别应聘者的包装程度
  17. windows中的文件共享(SMB服务)
  18. 电子商务H5游戏推荐:创意h5消消乐案例模板
  19. Java——将汉字转为汉语拼音工具类
  20. 顶点缓冲区与着色器 (The Cherno + LeranOpenGL)笔记

热门文章

  1. JavaScript学习与实践(8)
  2. Go语言 goroutine
  3. 说说如何搭建 Nginx 反向代理 Tomcat
  4. 在AMD-M上安装x86 OS.X.10.4.3失败
  5. IDC公司:服务器类微处理器市场最新预测
  6. form表单中method的get和post区别
  7. windows环境下,django + mongoengine + mongodb环境配置
  8. 如何识别AWARD的BIOS-ID
  9. IE自动在后台运行,不知道是什么病毒?
  10. java 快排和堆排序