# 1. init () 函数概述 🌟 在 Go 语言中, init() 函数是一个特殊的函数,用于执行包级别的初始化操作。它具有独特的执行机制和使用规则,是 Go 语言中重要的特性之一。 # 2. 执行机制 🔄 # 2.1 初始化顺序 Go 程序的初始化顺序如下: 包级别变量初始化 init() 函数执行 main() 函数执行 var X = 100 // 1. 首先初始化包级变量func init() { // 2. 然后执行 init 函数 X = X * 2 fmt.Println("init:", X)}func...

# runtime.map 🗺️ # 1. 基本用法 # 1.1 概述 非线程安全的 ⚠️ # 不能作为 map 类型的 key ❌ slice(可将其序列化为字符串,做为 key) map (可将其序列化为字符串,作为 key) func # 可以作为 map 类型的 key ✅ 基本类型:int,float64,string,bool 等 指针类型:*int,*string 等 结构体:但结构体的所有字段必须可以比较 接口类型:当接口的底层动态类型和动态值都支持比较时,可以作为键。 # nil map 和 空 map 的区别 🔍 nil map:未初始化的...

# Lua 脚本入门 # 1. Lua 简介 Lua 是一种轻量级的、可嵌入的脚本语言。它由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)的 Roberto Ierusalimschy、Luiz Henrique de Figueiredo 和 Waldemar Celes 等人开发。Lua 的设计目标是作为嵌入式脚本语言,它具有以下特点: 轻量级:Lua 的核心语言非常简单,只有大约 30 个关键字,易于学习和使用。 可嵌入:Lua 可以嵌入到其他应用程序中,作为脚本语言使用。它可以通过 C 语言的 API...

# DHCP 配置 [SW]interface GigabitEthernet 0/0/1 [SW-GigabitEthernet0/0/1]port link-type access [SW-GigabitEthernet0/0/1]port default vlan 10[SW]interface GigabitEthernet 0/0/2[SW-GigabitEthernet0/0/2]port link-type access [SW-GigabitEthernet0/0/2]port default vlan 20[SW]display ip routing-table Route...

# GoMock 与 GoMonkey 使用与对比详解(含最佳实践与常见坑) 本文详细介绍 Go 语言中两个常用的单元测试工具 GoMock 与 GoMonkey 的使用方法,并将它们的内容分块对比,最后给出总结建议。 # 1. GoMock # 1.1 基本概念 定位:Go 官方推荐的 Mock 框架,由 Google 维护。 原理:通过接口(interface)生成 Mock 类型,在测试时替换真实实现。 特点: 编译期类型安全 依赖注入(DI)友好 高可维护性 # 1.2 安装与集成 go install...

# 一、注册 handler 流程 # 1. 核心数据结构 # 1.1 gin.Engine type Engine struct { // 路由组 RouterGroup ...... //context 对象池 pool sync.Pool // 方法路由树,共 9 棵路由树,对应 9 中 http 方法。路由树基于压缩前缀树实现 trees methodTrees ......}Engine 为 Gin 中构建的 HTTP Handler,其实现了 net/http 包下 Handler interface...

# (sync.Pool)[https://github.com/golang/go/blob/go1.22.11/src/sync/pool.go] # 数据结构 type Pool struct { noCopy noCopy local unsafe.Pointer // 指向每个 P(处理器)的本地对象池,实际类型为 [P] poolLocal localSize uintptr //local 数组的大小(即 P 的数量) victim unsafe.Pointer // 指向上一个 GC 周期的本地对象池,用于 GC 回收 victimSize uintptr...

# sync.Cond # 介绍 sync.Cond 是 Go 语言标准库中的一个条件变量,用于在多个 goroutine 之间进行同步和通信。它允许一个或多个 goroutine 等待某个条件变为真,然后通知其他等待的 goroutine 继续执行。 type Cond struct { noCopy noCopy // L is held while observing or changing the condition L Locker // 每个 Cond 都有一个关联的 Locker L,在改变条件和调用 Wait 方法时,需要先获取 L 的锁 notify...

# golang-ants 协程池 # 前置知识 # sync.Locker sync.Locker 是 golang 1.9 版本引入的一个接口,它定义了两个方法,Lock () 和 Unlock ()。sync.Mutex 和 sync.RWMutex 都实现了这个接口。 type Locker interface { Lock() Unlock()}# sync.Mutex # spinLock spinLock...