![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go
文章平均质量分 76
张无忌打怪兽
工作多年的后端,分享一些技术上的经验总结。
展开
-
Go interface基础
接口类型是对其它类型行为的概括与抽象。通过使用接口,我们可以写出更加灵活和通用的函数,这些函数不用绑定在一个特定的类型实现上。很多面向对象的语言都有接口这个概念,Go 语言的接口的独特之处在于它是隐式实现。换句话说,对于一个具体的类型,无须声明它实现了哪些接口,只要提供接口所需的方法即可。这种设计让你无须改变已有类型的实现,就可以为这些类型创建新的接口,对于那些不能修改包的类型,这一点特别有用。原创 2024-01-12 09:04:02 · 1063 阅读 · 1 评论 -
go interface 设计与实现
在了解 gointerface的设计过程中,看了不少资料,但是大多数资料都有生成汇编的操作,但是在我的电脑上指向生成汇编的操作的时候,生成的汇编代码却不太一样,所以有很多的东西无法验证正确性,这部分内容不会出现在本文中。本文只写那些经过本机验证正确的内容,但也不用担心,因为涵盖了 gointerface设计与实现的核心部分内容,但由于水平有限,所以只能尽可能地传达我所知道的关于interface的一切东西。对于有疑问的部分,有兴趣的读者可以自行探索。如果想详细地了解,建议还是去看看iface.go。原创 2024-01-11 08:54:51 · 1391 阅读 · 1 评论 -
go interface 基本用法
Go 中的接口跟我们常见的编程语言中的接口不太一样,go 里面实现接口是不需要使用implements关键字显式声明的,go 的接口为我们提供了难以置信的一系列的灵活性和抽象性。接口本质是一种自定义类型。(跟 Java 中的接口不一样)接口是一种特殊的自定义类型,其中没有数据成员,只有方法(也可以为空)。接口是完全抽象的,不能将其实例化。然后,对于接口类型变量,我们可以把任何实现了接口所有方法的类型变量赋值给它,这个过程不需要显式声明。例如,假如Bird实现了Fly。原创 2024-01-11 08:49:59 · 1276 阅读 · 1 评论 -
go Context 设计与实现
上面我们说了,在Context取消的时候,是通过关闭chan的方式来实现的,那么为什么要这么做呢?这是因为,如果说要通过往chan写入数据的方式来通知其他子孙Context的话,我们就需要有多少个子孙Context就要往chan里面发多少次,但是如果选择使用close的方式的话,我们就完全不用管派生出了多少个可以cancel的Context,因为一旦chan关闭了,所有的原创 2024-01-09 09:59:28 · 1514 阅读 · 21 评论 -
go Context 指北
我们先是讲解了创建Context的几种方式,其中,根Context只有两种创建方式,分别是和,其他种类的Context可以通过创建。在 go 里面,如果我们只是想要取消一个协程,那么我们可以通过WithCancel来实现,如果要进行超时控制,可以使用或。Context是一个树状结构,每一个Context都可以作为父Context创建新的Context,然后在调用CancelFunc或者超时的时候,会由父到子传递取消的信号。Context也可以用来传递参数,比如我们可以通过WithValue。原创 2024-01-09 09:55:19 · 901 阅读 · 0 评论 -
Go Channel 详解
Channel 类型blockingRangeselectTimer 和 Tickerclose同步Channel 是 Go 中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)。它的操作符是箭头原创 2024-01-08 17:53:36 · 1241 阅读 · 0 评论 -
go chan 设计与实现
chan底层是hchan结构体。go 语法里面的原创 2024-01-08 00:02:20 · 1528 阅读 · 2 评论 -
gin表单验证struct tag
本文是对的回答。然后表单验证的时候,明明 Order 传递了一个不符合的值,但却验证通过了。原创 2024-01-07 23:57:10 · 592 阅读 · 1 评论 -
gin切片表单验证
在Gin中对切片进行表单验证的步骤与对其他类型的字段进行验证类似。如果数据验证失败,我们返回一个包含错误信息的JSON响应。创建一个结构体,用于存储表单数据。确保结构体中的字段类型与你预期的表单数据类型一致。确保在实际应用中根据需求进行适当的调整,这只是一个简单的演示。方法,将请求中的数据绑定到结构体实例。在处理请求的处理程序中,我们使用。在处理请求的处理程序中使用。在这个例子中,我们定义了一个。结构体,其中包含一个切片字段。确保切片中至少包含一个元素。标签,指定字段的验证规则。确保切片非空,并使用。原创 2024-01-07 23:56:00 · 557 阅读 · 1 评论 -
Golang gin RouterGroup 方法概览
使用的时候,定义的中间件是对所有请求都有效的。使用g.Use()的时候,定义的中间件只对/user路由分组有效。原创 2023-12-15 08:54:19 · 235 阅读 · 0 评论 -
Golang gin Engine 结构体属性含义
gin 框架中的 engine 各属性、方法的思维导图原创 2023-12-15 08:50:40 · 32 阅读 · 0 评论 -
Golang gin Context 详解
好了,到此为止吧,关于Context后续有空再写一篇,这里面的东西,如果对Context的一些 API 不太熟悉的话,可能会不太好懂。main 函数本身是一个协程,协程里面可以通过go关键字启动新的协程。协程本质上是一个函数调用。父子协程是可以并行执行的(前提是有多个 CPU 核)。在需要等待子协程执行完的时候,可以使用,当然除了这个,另外一个方法是使用chan。Context代表的是父子协程的一个上下文对象,主要作用是共享数据、以及对子协程做一些超时控制等。gin里面的Context除了。原创 2023-12-15 08:49:19 · 989 阅读 · 0 评论 -
Golang gin context 结构体属性含义
有一定 go 使用经验的人应该知道,context在 go 的 web 开发中往往代表着一个请求的上下文。作为开发者,我们可以通过这个context实例,实现对请求 goroutine 链条的管理,比如请求的超时控制等等。不过,net/http里面的ServeHTTP方法只是给了开发者两个参数,一个是,是用来返回响应给客户端用的,另一个是,是用来获取请求信息的。但实际上包含了请求相关的context,这个context就是整个请求最初的那个context。对于 Web 开发来说,有了和。原创 2023-12-15 08:48:14 · 166 阅读 · 0 评论 -
go Context 设计与实现
golang 中 Context 的设计与实现原创 2022-11-23 12:47:14 · 219 阅读 · 0 评论