摘要:
在 Go 中,指针方法可以被值类型调用,这归因于 Go 编译器的自动解引用特性。 如果一个方法是为指针类型定义的,而我们使用值类型去调用它,Go 会自动将值的地址传递给方法,使得调用能够正常进行。 例子解析 1. 指针方法的定义 假设我们定义了一个方法绑定在结构体的指针上: type Person 阅读全文
摘要:
cancel() 取消的是上下文(context)本身,而不是正在执行的协程。 因此,协程的取消是通过 context 的取消信号来间接实现的。 具体地,协程会在收到 context 的取消信号后自行决定是否退出。 如何使用 cancel() 取消协程? 协程通常会通过检查 context 的状态来 阅读全文
摘要:
在 Go 中,context 和 channel 都是并发编程中非常重要的工具,但它们有不同的用途和功能。以下是它们之间的主要区别: 1. 主要用途 context: context 主要用于在多个协程之间传递请求范围的数据、取消信号和超时设置。它通常用于控制和管理协程的生命周期,尤其是在处理跨协程 阅读全文
摘要:
什么是 context? context 是 Go 标准库中用来管理任务生命周期和跨 API 数据传递的工具。它的主要应用场景是在并发编程中,尤其是处理像 HTTP 请求这样有超时限制或需要手动取消的任务。 为了更通俗地理解,可以把 context 想象成一个任务的「管理员」,它可以: 通知任务何时 阅读全文
摘要:
什么是 package? package 是 Go 的代码组织单元,用于将功能相关的代码分组到一起。 每个 Go 文件都属于某个 package,通过 package 声明指定。 一个 package 下可以包含多个 Go 文件,它们共享该 package 的作用域和功能。 package 和 Go 阅读全文
摘要:
想象你去一场大型活动现场,需要通过门禁: Cookie:像入场凭证卡 你拿到的是什么? 活动方发给你一张纸质入场凭证卡(Cookie)。 它怎么用? 每次你进出场地时,保安看你的卡确认你能进场。 保安做了什么? 把你的卡和后台系统核对,确认你是合法参与者。 特点: 好处:卡上写着你的基本信息,很容易 阅读全文
摘要:
在 Web 开发中,自定义路由器(即自定义 ServeMux 实例)可以带来更大的灵活性和控制。 1. 需要不同的路由策略 默认的 DefaultServeMux 适合简单的 URL 路由需求,但在一些更复杂的场景下(例如需要动态路由、参数化路径等),自定义路由器或第三方路由库(如 gorilla/ 阅读全文
摘要:
在编程中,回调函数是一种作为参数传递给另一个函数的函数。这种函数在接收函数中被调用,用来完成特定的任务。回调函数允许将不同的操作和逻辑分离,使代码更灵活和模块化。 回调函数的概念 传递函数作为参数:回调函数通过参数传递给另一个函数,并在接收函数内部被调用。 延迟执行:回调函数的执行时机通常由接收函数 阅读全文
摘要:
在 Go 语言中,类型断言用于将接口类型的变量转换为具体类型,以便能够访问其底层值。它在操作空接口(interface{})时尤其有用,因为空接口可以持有任意类型的值。 类型断言的语法 类型断言的基本语法如下: value, ok := interfaceVariable.(TargetType) 阅读全文
摘要:
在 Go 语言中,make 是一个内置函数,专门用于分配和初始化 slice(切片)、map(映射) 和 channel(通道) 三种数据类型。 **make 函数不会返回一个指针,而是返回初始化后的数据结构本身的引用**。 make 函数的用途 make 的主要作用是为这些引用类型的数据结构分配内 阅读全文