![](https://img-blog.csdnimg.cn/20201117150458608.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Golang
文章平均质量分 57
记录Go语言的学习及使用
相守之路
回归初心,一路相守
展开
-
Goland 执行Makefile中的命令,方便运行和Debug
如图,具体操作步骤如下:创建新配置选择Makefile自定义运行/调试配置名称选择Makefile文件填入执行参数,这个看Makefile文件的定义,比如我定义了 run 参数选择当前项目工作目录原创 2021-07-14 22:10:29 · 1613 阅读 · 0 评论 -
Kratos 集成Gin
Kratos 集成 Gin规范项目分层处理请求处理、响应编写路由routeKratos 集成gin注入 wire set中Kratos 可以在 .proto文件定义请求类型,URL,响应等等,如官方示例:service BlogService { rpc CreateArticle (CreateArticleRequest) returns (CreateArticleReply) { option (google.api.http) = { post:原创 2021-06-29 17:28:19 · 3186 阅读 · 6 评论 -
DDD下的目录结构
原创 2020-12-10 22:43:04 · 2861 阅读 · 0 评论 -
Golang——业务开发积累
日志service层记录业务逻辑日志,dao层不用在专门记录了。controller层记录参数校验日志,最好不要记录和业务想关的原创 2020-11-13 22:19:42 · 286 阅读 · 0 评论 -
Golang——为Go项目编写Makefile
为Go项目编写Makefile在main.go所在目录下新建一个 Makefile文件,填写以下内容:.PHONY: all build run gotool clean helpBINARY="test"all: gotool buildbuild: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ${BINARY}run: @go run ./gotool: go fmt ./ go vet ./clean: @i原创 2020-10-30 18:59:51 · 957 阅读 · 0 评论 -
Golang——defer的学习及使用
defer学习及使用一、defer后面必须是函数或方法的调用,不能是语句二、defer函数的参数传递为值拷贝三、defer语句必须先注册后执行四、主动调用`os.Exit(int)`退出进程时,defer将不再执行五、多个需要关闭资源的场景,可以避免资源泄漏六、副作用七、不要对有名返回值参数进行操作Go提供了defer关键字,可以注册多个延迟调用,这些调用以先进后出(FILO)的顺序在函数返回前被执行。常用于保证一些资源最终一定能够得到回收和释放一、defer后面必须是函数或方法的调用,不能是语句.原创 2020-07-09 10:25:46 · 359 阅读 · 0 评论 -
Golang——ReverseProxy源码分析
Go ReverseProxy源码分析功能点:源码分析核心结构体核心方法由于发文章时涉及到一些 m g 词汇,所以反复删除了原有的一些理解,这才能发表成功。其中,一些词也纯拼音表示了,比如 dai liReverseProxy 位于 net.http.httputil 包下(只保留了这句 55555…)功能点:支持自定义修改响应内容支持连接池支持错误信息自定义处理支持 websocket 服务支持自定义负载均衡支持 https dai li支持 url 重写源码分析声明:go.原创 2020-07-05 18:50:24 · 1462 阅读 · 0 评论 -
Golang学习——基于Gin框架进行httptest单元测试
基于Gin框架进行httptest单元测试一.实例代码1.全局变量及main函数2.初始化路由3.三个主要功能3.1 首页3.2 导入用户3.3 抽奖二.测试工具函数2.1 ParseToStr 将map中的键值对输出成querystring形式2.2 Get 根据特定请求uri,发起get请求返回响应2.3 ParseToStr 将map中的键值对输出成querystring形式2.4 PostJson 根据特定请求uri和参数param,以Json形式传递参数,发起post请求返回响应三.开始进原创 2020-05-18 15:57:18 · 1977 阅读 · 0 评论 -
Golang学习——error错误处理浅谈
Golang中error错误处理浅谈一.error与类型错误的变量进行比较1.== 比较2.contains 比较二.断言底层结构类型,并从结构体字段获取更多信息三.断言底层类型的行为在解析了Golang中error和创建error的源码后(Golang学习——error和创建error源码解析)。对error有了一定理解,不过error处理才是实际开发中非常重要的一点。Golang中的error处理是一门大学问,写出优雅又正确的处理代码是比较考验编码功底和知识广度,深度的。今天就先浅谈一下Gola原创 2020-05-10 17:36:32 · 997 阅读 · 1 评论 -
Golang学习——error和创建error源码解析
Golang中error和创建error源码解析一.初识error1.什么是error2.error源码二.error创建1.errors.New()函数2.fmt.Errorf()函数Golang中的错误处理和Java,Python有很大不同,没有try...catch语句来处理错误。因此,Golang中的错误处理是一个比较有争议的点,如何优雅正确的处理错误是值得去深究的。今天先记录error是什么及如何创建error,撸一撸源码。一.初识error1.什么是errorerror错误指的是可能出原创 2020-05-10 14:38:26 · 3215 阅读 · 0 评论 -
Golang学习——interface接口学习(二)
Golang接口断言学习一.类型断言二.接口断言1.if else结构 接口断言2.switch结构 接口断言在Golang中,空接口 interface{}没有定义任何函数,因此Golang 中所有类型都实现了空接口。当一个函数的形参是interface{},那么在函数中,需要对形参进行断言,从而得到它的真实类型。一.类型断言在学习接口断言之前,先了解一下类型断言,其实接口断言也是在判断类...原创 2020-05-07 09:18:44 · 253 阅读 · 0 评论 -
Golang学习——interface接口学习(一)
Golang中接口定义及实现,空接口,接口嵌套学习一.接口定义及实现1.定义接口2.实现接口二.空接口1.实例三.接口嵌套1.实例在Golang中,接口是一组方法签名。当类型为接口中的所有方法提供定义时,它被称为实现接口。它与OOP(面向对象编程)非常相似。接口指定了类型应该具有的方法,类型决定了如何实现这些方法。如果某个对象实现了某个接口的所有方法,则此对象就实现了该接口。一.接口定义及实...原创 2020-05-04 21:36:51 · 515 阅读 · 0 评论 -
Golang学习——结构体struct(二)
Golang中匿名结构体和匿名字段,结构体嵌套,模拟继承性学习一.匿名结构体和匿名字段1.匿名结构体2.匿名字段二.结构体嵌套1.实例三.结构体模拟继承性1.实例2.结构体嵌套`is a`和`has a`区别这篇文章也是结构体的学习,不过,如果没有结构体struct基础的话,推荐先看Golang学习——结构体struct(一)。今天主要记录 匿名结构体和匿名字段,结构体嵌套,模拟继承性。一....原创 2020-05-04 10:25:07 · 383 阅读 · 0 评论 -
Golang学习——如何判断Golang接口是否实现?
前言在看一个底层库的的时候,看到了一个比较奇怪的写法,于是乎有了本文。主要探讨两个问题:1.利用编译来判断Golang接口是否实现2.延伸出的make和new的区别正文1.利用编译来判断Golang接口是否实现看了一个底层通用链接池的库,有这么一行代码:var _ Pooler = new(WeightedRoundRobin)需要解释的是:Pooler是一个接口类型。typ...转载 2020-05-01 20:51:18 · 1570 阅读 · 0 评论 -
Golang学习——结构体struct(一)
Golang中结构体struct定义,结构体指针,空结构体和nil区别学习一.结构体的定义和初始化1.语法2.初始化二.结构体指针1.结构体前面加'*'2.通过`new()`创建结构体3.空结构体和nil区别Golang中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。类似Java,Python中的cla...原创 2020-05-01 10:10:26 · 1314 阅读 · 0 评论 -
Golang学习——常量const和iota
Golang中常量const和iota一.const1.语法2.实例二.iota1.知识点2.实例三.结合 type,更能表现实际意义一.const常量是一个简单值的标识符,在程序运行时,不会被修改的量。Java编程规范中,常量一般都是全大写字母,但是在Golang中,大小写是具有一定含义的,所以不一定所有常量都得全大写Golang中,大写字母开头表示public,小写字母开头表示priv...原创 2020-04-30 15:53:54 · 949 阅读 · 0 评论 -
Golang学习——数组指针和指针数组的区别
Golang中数组指针和指针数组区别一.数组指针二.指针数组区别二者,字面上只看后两个字即可:数组指针 :它是一个指针,但是数据类型为数组,或者说指向数组指针数组 :它是一个数组,该数组的元素都为地址一.数组指针1.语法var arrPtr *[size] type2.实例一步一步创建,容易理解var arrPtr * [4]int // 创建一个指针 arrP...原创 2020-04-30 13:27:53 · 1256 阅读 · 0 评论