![](https://img-blog.csdnimg.cn/20200109202118913.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
go
文章平均质量分 63
go语言开发
水痕01
暂停更新博客
展开
-
go使用embed渲染前端静态项目
【代码】go使用embed渲染前端静态项目。原创 2024-06-29 17:46:55 · 84 阅读 · 0 评论 -
go对rabbitmq基本操作
1、发布订阅模式同样是一个生产者生产消息,多个消费者来消费,与上面的工作模式的区别是:工作模式是一个消费者消费后,另外一个消费者就消费不到了,发布订阅模式是不管有几个消费者都可以消费到消息。1、工作模式是指一个生产者多个消费者,在简单模式上扩展成多个消费者,每个消费者只能交替来消费消息。4、生产者只需要把消息发送到交换机里面就可以,交换机会根据绑定的队列来推送消息。1、路由模式和上面的发布订阅模式有点类似,只是在上面的基础上添加的路由。3、消费者只需要绑定队列来消费消息就可以。原创 2023-11-26 10:22:28 · 1442 阅读 · 0 评论 -
go-zero微服务的使用
项目和上面介绍的一样的,这里就不继续重复介绍,执行转换脚本。,基本步骤都是一样的,这里就不继续重复的工作。,不出意外的话肯定会启动后挂的,查看。1、创建一个项目分别创建两个文件夹。里面补充代码,重启服务继续测试。8、运行2个项目,前端直接访问。3、继续测试下创建用户的方法。(老版的不支持),创建一个。1、需要下载一个最新版的。执行生成对应的项目文件。的服务,但是本地没启动。原创 2023-11-19 11:19:36 · 777 阅读 · 1 评论 -
go-zero对数据库的操作
文件,由数据库文件生成对应的实体类和。2、创建一个数据库,并且创建一个表。5、执行上面的文件,并且在。1、在配置文件中添加配置项。的方式来实现数据库操作,或者使用下面的方式来查询。1、这里我这就直接结合。4、在根目录下创建一个。的文件用来连接数据库。原创 2023-11-18 16:21:10 · 840 阅读 · 1 评论 -
go zero手把手教你入门案例
1、创建一个utils的文件夹import ("net/http"})// Success 成功的请求Response(w, 0, "请求成功", data)// Fail 失败的请求2、定义api的时候就可以去除这些固定的写法// 定义要被方法的方法3、重新执行转换脚本4、改写代码,后运行。原创 2023-11-18 10:43:26 · 461 阅读 · 1 评论 -
go语言对map排序操作返回字符串
【代码】go语言对map排序操作返回字符串。原创 2023-11-16 08:52:50 · 93 阅读 · 0 评论 -
gorm中修改mysql主键的方法
1、选用的雪花算法第三方库,链接地址2、创建一个plugin.go的文件,我也不废话,直接贴上我自己定义的代码import ("fmt"// 创建字段的时候雪花算法生成id???")})// 创建人= nil {fmt.Println("创建的钩子函数")// 获取到上下文中数据???")})// 更新人= nil {fmt.Println("修改")})fmt.Println("更新后")fmt.Println(db.Statement.Model, "当前数据11")原创 2023-09-07 10:20:47 · 546 阅读 · 0 评论 -
gorm中正确的使用json数据类型
JSON。原创 2023-08-23 09:28:31 · 3949 阅读 · 0 评论 -
实际项目中使用gorm-gen来生成实体类
官网地址,正常的写法是先写数据模型,然后由数据模型自动同步生成到数据库中,但是这样的工作量会比较大,对于写后端的人来说都熟悉。2、使用上面的方式在项目中写出的代码大概是如此,这样如果数据库字段改了,程序是无法识别出来,不能很好的规避错误。语句,正常来说都是先自己手动创建表,利用工具将表字段同步到项目实体类中,刚好可以满足这个需求,写出的代码更好的维护,比如下面的代码。的文件,这个地方是连接数据库的,先运行上面的文件才会生成。5、可以正常使用内置封装好的方法了,3、在项目的根目录下创建一个。原创 2023-06-16 16:59:53 · 2476 阅读 · 6 评论 -
简单记录下gorm中存储json
【代码】简单记录下gorm中存储json。原创 2023-01-13 13:20:10 · 1623 阅读 · 0 评论 -
记录下在gin中下载文件
【代码】记录下在gin中下载文件。原创 2022-10-23 13:45:27 · 490 阅读 · 0 评论 -
gin框架中使用websocket发送消息及群聊
常见的场景有群聊,一个后台用户要给自己的顾客推送促销消息,这里就举例用后台给顾客推送促销消息。4、处理群聊过程中临时加入群聊的,直接在加入的时候调用加入群组的方法就可以。11、定义一个对外的方法(比如在别的接口中要发送数据到。判断如果当前用户在这个群聊里面就发送数据到管道中。7、创建一个方法从管道中获取数据发送给前端。10、使用接收客户端数据的方法。6、创建一个发送消息到管道中。接口一样的做一个接口鉴权(2、在连接的时候加入群聊。3、推送消息,循环连接的。1、根据当前连接的用户。...原创 2022-08-10 09:32:32 · 5319 阅读 · 4 评论 -
使用docker来部署go-web项目
网络信息,确保项目下的容器都在一个网络下就可以正常使用。注意点如果项目中没有关联其它容器的话,可以不需要使用。的数据库,将数据表导入,测试本地运行是否正常。4、同样的运行容器,浏览器访问一切都正常。7、同样的可以使用容器分阶段构建。6、直接在浏览器上输入地址访问。4、先在本地数据库创建一个。查看网络下具体的容器。...原创 2022-07-31 10:51:23 · 387 阅读 · 0 评论 -
发布一个go的工具包到github
1、在上新建一个公开的项目,比如我创建一个的工程2、将工程克隆到本地来3、使用初始化项目4、初始化后的的文件如下,如果你的不是你的项目地址你要修改过来5、在项目下创建自己的文件写入代码6、添加使用文档7、提交到上2、将提交到上3、直接在上查看是否已经提交成功4、查看自己发布的包5、在本地工程测试安装依赖包6、使用方式请查看地址为的说明文档,使用方便麻烦点赞一个...原创 2022-07-09 17:20:22 · 1164 阅读 · 0 评论 -
go的http包客户端的使用
一、基本介绍在net/http包中提供了一个被称为Client的结构体,该结构体位于库文件的src/net/http/client.go文件中,常见使用场景一般是做go web开发过程中对接第三方的api接口(常见的比如微信授权获取手机号码等),爬虫领域的使用在Client这个结构体中已经帮我们实现了比较常见的Get和Post请求,如果你要使用Delete等别的请求方式就要使用原生的http.NewRequest,其中Get和Post只是官方帮我们封装了,底层还是使用的http.NewRequest来实原创 2022-03-14 17:43:08 · 1902 阅读 · 1 评论 -
gorm中多表关联的使用
一、一对一的关系1、这里举例说明常见的一对一的关系,比如员工和公司的关于,一个员工只能在一个公司就职2、建议数据模型,默认外键的方式type UserEntity struct { gorm.Model Name string `json:"name"` CompanyEntityId int `json:"company_id" gorm:"column:company_id"` // 默认的外键是当前的company_id指向company表中的id原创 2021-11-04 11:34:52 · 4323 阅读 · 0 评论 -
关于go语言中protobuf高级使用
如果你仅仅是想玩玩go-web单机开发可以参考gin项目框架一、微服务之间传递数据1、在微服务中不仅仅是可以通过入参和返回参数来进行数据交互,另外还可以通过metadata的方式传递参数2、定义一个简单的proto文件syntax = "proto3";option go_package = ".;proto";service HelloWorld { rpc SayHello(HelloRequest) returns(HelloResponse);}message .原创 2021-10-24 19:37:54 · 417 阅读 · 0 评论 -
关于go项目代码规范
一、为什么要代码规范1、代码规范不是强制的,也就是说你不遵循代码规范写出来的代码运行也是完全没有问题的。2、代码规范的目的仅仅的方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性,主要包括以下几方面命名规范注释规范代码风格二、命名规范命名命名是代码规范中很重要的一部分,统一命名规则有利于提高代码的可读性,好的命名仅仅通过命名就可以读取足够多的信息1、当命名(包括常量、变量、类型、函数名、结构体字段等)以一个大写字母开头,比如:Person,那么这种形式的标识符的原创 2021-10-18 21:48:07 · 283 阅读 · 0 评论 -
全面掌握go语言中的protobuf
一、环境配置1、下载对应版本的安装包2、使用命令go env查看自己的go path地址并且在go path的目录下创建一个bin文件夹3、将第一点下载下来的东西解压出来将bin下面的protoc拷贝到go path下的bin文件夹下4、查看安装是否成功# 查看版本protoc --version# 查看常见命令protoc目前只支持这几种语言[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ElSdGgmr-1633412916556)(i原创 2021-10-05 13:50:12 · 996 阅读 · 0 评论 -
NodeJs和go中使用consul做服务发现
一、环境的安装1、安装dockercurl -fsSL https://get.docker.com | bash -s docker --mirror aliyuncurl -sSL https://get.daocloud.io/docker | shdocker version2、使用docker安装consul安装镜像docker pull consul启动容器docker run -d -p 8500:8500 -p 8300:8300 -p 8301:8301原创 2021-07-24 16:50:16 · 539 阅读 · 0 评论 -
centos环境使用supervisor部署gin-web项目
一、环境的配置1、在centos服务器上安装gowget https://dl.google.com/go/go1.16.5.linux-amd64.tar.gz2、解压到目录下sudo tar -C /usr/local -xf go1.16.5.linux-amd64.tar.gz3、修改~/.bash_profile文件# go程序export PATH=$PATH:/usr/local/go/bin4、配置生成有效source ~/.bash_profile原创 2021-07-14 21:40:07 · 1374 阅读 · 0 评论 -
go项目中环境变量的配置
一、为什么要配置文件1、容易编辑,配置比较集中,方便修改,在大业务量的系统里面,通过配置会方便后人理解整个系统的架构2、做到业务代码和环境解耦,环境配置变量不侵入到代码层面3、不同的环境切换比较方便二、在go中使用配置文件1、viper网站地址2、本地安装go get github.com/spf13/viper3、简单的读取配置文件package mainimport ( "fmt" "github.com/spf13/viper")func main()原创 2021-07-10 21:32:23 · 1112 阅读 · 0 评论 -
手动实现go微服务开发
一、protobuf环境的配置1、下载对应自己电脑的版本2、使用命令go env查看自己的go path地址并且在go path的目录下创建一个bin文件夹3、将第一点下载下来的东西解压出来将bin下面的protoc拷贝到go path下的bin文件夹下4、查看安装的版本protoc --version5、protoc-gen-go的安装(用于生成对应go语言的micro代码)go get -u github.com/golang/protobuf/protogo ge原创 2021-07-10 17:13:48 · 338 阅读 · 0 评论 -
总结go语言中切片的使用
一、创建切片的几种方式1、直接定义var slice1 []int = []int{1,2,3,4}var slice2 = []string{"张三", "李四"}slice3 :=[]bool{true, false}2、使用make函数来创建// 使用make定义的时候可以传递三个参数,// 第一个是切片的数据类型// 第二个参数是切片的长度// 第三个参数是切片的容量 可选的如果不写默认和长度一样的var slice1 = make([]int,2)3、数组转换原创 2021-06-23 21:00:06 · 459 阅读 · 0 评论 -
基于 Gin 模块化开发 API 框架设计
一、gin项目介绍gin框架对于写go语言的人来说入门很简单,有点类似python中的flask框架,什么都需要自己去找第三方包,然后根据自己的经验来创建目录结构,对于没有项目经验的人来说,这点真的不如同类型的beego框架,已经有清晰的目录结构,有时候我们可以说gin仅仅是一个包,算不上框架。自由组装度比较灵活,这也提现了我们开发人员的经验重要性。如何更好的搭建gin-api项目是一个难事。以下是本人根据后端经验采用mvc的思路搭建一套基本的gin-api框架。以供大家参考使用,大家觉得好点个????原创 2021-04-29 08:31:10 · 2585 阅读 · 4 评论 -
gin中使用日志模块
一、简介开发的服务器代码总会出现未知的错误,那么排错及维护就是服务器开发重要且必不可少的一部分,但是服务器一般是以后台服务的方式运行的,没有控制台,不能直接看到日志,因此我们必须将日志存到磁盘上,设置存储的时间点,请求的接口名等信息。二、在go中使用日志模块1、第三方包2、安装依赖包go get -u github.com/sirupsen/logrus3、基本使用日志package mainimport "github.com/sirupsen/logrus"func原创 2021-04-28 12:25:35 · 1599 阅读 · 0 评论 -
gorm对数据库的基本操作
一、环境的配置1、github地址2、文档地址、中文官方3、安装依赖包go get -u gorm.io/gormgo get -u gorm.io/driver/mysql4、将gorm封装成一个工具方法package utilsimport ( "fmt" _ "github.com/go-sql-driver/mysql" "gorm.io/driver/mysql" "gorm.io/gorm")var GormDb *gorm.DBfunc i原创 2021-04-23 21:32:22 · 642 阅读 · 0 评论 -
gin框架使用jwt对前端用户身份认证
一、在gin中使用jwt-go来生成token1、安装包go get -u github.com/dgrijalva/jwt-go2、定义基础的结构体// 签名需要传递的参数type HmacUser struct { Id string `json:"id"` Username string `json:"username"`}type MyClaims struct { UserId string `json:"user_id"` Username st原创 2021-04-22 17:32:38 · 1110 阅读 · 1 评论 -
gin框架中使用xorm进行数据库操作
一、使用xorm1、如果我们在实际项目中直接写原生sql是没错的,但是对于不太熟悉sql的童鞋来说是比较痛苦的,且代码量比较大,还要避免sql的烦恼,因为我们一般会采用开发框架对应的orm来操作数据库,在gin中比较优秀的orm框架有xorm和gorm,本小节先介绍xorm的基本使用,xorm支持双向映射,可以将结构体同步到数据库表操作2、xorm官网地址go get github.com/go-xorm/xorm3、封装一个连接数据库的方法package utilsimport原创 2021-04-18 12:40:52 · 1949 阅读 · 0 评论 -
gin框架中使用原生sql来操作数据库
一、在gin中使用mysql操作数据库1、文档地址前提是你对sql语句比较熟悉的,不然一般不会选择原生sql方式来操作数据库且代码量比较大2、安装依赖包go get -u github.com/go-sql-driver/mysql3、将mysql连接的单独封装起来这里采用init函数来封装,因为init函数会在main函数之前执行的// utils/db.go文件package utilsimport ( "database/sql" "fmt" // 这个不加在原创 2021-04-18 08:32:59 · 2813 阅读 · 0 评论 -
gin框架中对前端传递的数据进行校验(包括国际化)
一、为什么要数据校验数据校验有点类似中间件的作用,使前端传递过来的数据更加合法的到达控制器,以减少数据在控制层中一个一个的校验。如果不使用数据校验,要不就自己手动的在控制器中一个一个的数据校验在go语言中是没有类似java一样的注解的方式来校验数据,但是可以在结构体中使用校验方法来校验(本人不是特别的喜欢这种方式,但是对于这门语言也只能这样)二、在go语言中使用数据校验1、官网地址https://github.com/go-playground/validator2、安装依赖包原创 2021-04-12 21:55:05 · 1451 阅读 · 1 评论 -
使用docker加go.mod方式搭建go-micro V2微服务项目(一)
一、基础环境备注,本人是先将go的环境卸载了,删除了go path目录下的全部文件来配置的,如果你有之前的环境可能会有相互影响的mac操作系统go的版本go version go1.14.14 darwin/amd64编辑器使用的是goland2020.1二、protobuf环境的配置1、下载对应自己电脑的版本2、使用命令go env查看自己的go path地址并且在go path的目录下创建一个bin文件夹3、将第一点下载下来的东西解压出来将bin下面的原创 2021-01-27 21:11:27 · 1189 阅读 · 0 评论 -
一文搞懂gin各种上传文件
一、先封装一个根据年月日时间方式来创建目录1、创建一个utils的文件夹并且创建folder.go的文件package utilsimport ( "os" "path/filepath" "time")//定义一个创建文件目录的方法func Mkdir(basePath string) string { // 1.获取当前时间,并且格式化时间 folderName := time.Now().Format("2006/01/02") folderPath := filepa原创 2020-11-10 14:50:04 · 7381 阅读 · 0 评论 -
beego框架orm多表查询
说明,以下重点是使用的是原生sql。实话说beego中的orm还不完善。个人建议还是自己手动创建数据库的方式来操作数据库。一、一对一关系查询1、原生sql建表-- ------------------------------ 创建一个用户表-- ----------------------------DROP TABLE IF EXISTS `user`;create table `user`( id int(11) primary key auto_increment comme.原创 2020-11-02 11:53:53 · 2090 阅读 · 0 评论 -
beego框架orm中使用原生sql
一、使用Exec操作注意Exec()函数只能执行添、删、改操作,不能进行查询操作1、插入数据o := orm.NewOrm()res, err := o.Raw(`insert into user values(id,?,?,?)`, "欧阳锋", 50, "蛇岛").Exec()fmt.Println(res.RowsAffected())fmt.Println(err)2、更新数据o := orm.NewOrm()res, err := o.Raw(`update use原创 2020-10-30 13:51:14 · 1080 阅读 · 0 评论 -
beego框架orm操作exper的操作
一、基本使用1、初始化一个项目2、安装依赖包// orm框架go get github.com/astaxie/beego/orm // 使用什么数据库go get github.com/go-sql-driver/mysql3、在main.go中使用init函数进行连接import ( ... _ "github.com/go-sql-driver/mysql" // 必须加上)func init() { orm.RegisterDriver("mysql",原创 2020-10-30 13:46:38 · 493 阅读 · 1 评论 -
beego框架orm基础使用一
一、基本的配置1、安装依赖包// orm链接库go get github.com/astaxie/beego/orm// 使用的数据库go get github.com/go-sql-driver/mysql2、在main.go文件中添加init方法用于连接数据库func init() { orm.RegisterDriver("mysql", orm.DRMySQL) // default必须要有,表示连接的数据库别名,可能是多个 orm.RegisterDataBase原创 2020-10-30 13:36:20 · 1047 阅读 · 0 评论 -
go框架bee上传文件
一、使用表单的方式上传1、新建控制器和路由package controllersimport "github.com/astaxie/beego"type UploadFileController struct { beego.Controller}func (self *UploadFileController) Get() { self.TplName = "file.html"}func (self *UploadFileController) Post() { se原创 2020-10-05 14:19:21 · 437 阅读 · 0 评论 -
go框架bee前后端数据交互的几种方式
一、获取url上的query参数1、url类型http:xxx:8080/person?name=hell&age=202、后端中定义路由func init() { beego.Router("/person", &person.PersonController{})}3、在后端中获取参数package personimport ( "fmt" "github.com/astaxie/beego")type PersonController原创 2020-10-03 08:47:50 · 1467 阅读 · 0 评论 -
go语言中单元测试的总结
一、传统的方式对代码测试在文件中创建一个main的函数1、传统方式的写法package mainimport "fmt"// 定义一个求和的方法func sum(n int) int { res := 0 for i := 0; i <= n; i++ { res += i } return res}func ma...原创 2019-12-27 14:23:36 · 445 阅读 · 0 评论