随笔分类 -  Go

摘要:目录1. 创建Context1.1 context.Background()1.2 context.TODO()2. 派生Context2.1 context.WithCancel()2.2 context.WithTimeout()2.3 context.WithDeadline()2.4 con 阅读全文
posted @ 2025-01-26 09:54 guanyubo 阅读(49) 评论(0) 推荐(0) 编辑
摘要:目录关键点:示例代码代码说明:可能的输出:总结: 在 Go 的 select 语句中,如果多个 case 同时满足条件,Go 会随机选择一个执行,而其他满足条件的 case 不会被执行。也就是说,select 语句只会执行一个 case,其余的 case 会被忽略。 关键点: select 的执行机 阅读全文
posted @ 2025-01-24 13:17 guanyubo 阅读(20) 评论(0) 推荐(0) 编辑
摘要:目录示例代码代码说明:输出:关键点:注意事项: 在 Go 中,如果从一个已关闭的 channel 读取数据,会立即返回该 channel 元素类型的零值,并且不会阻塞。对于 select 语句来说,如果 c.ExitBuffChan 被关闭了,那么 case <-c.ExitBuffChan 会立即 阅读全文
posted @ 2025-01-24 13:16 guanyubo 阅读(18) 评论(0) 推荐(0) 编辑
摘要:目录1. 安装 logrus2. 基本用法输出示例3. 日志级别设置日志级别记录不同级别的日志4. 添加字段输出示例5. 自定义日志格式输出示例6. 使用钩子(Hooks)输出示例7. 日志输出到文件8. 使用日志实例9. 日志轮转安装 lumberjack使用 lumberjack10. 性能优化 阅读全文
posted @ 2025-01-22 16:07 guanyubo 阅读(40) 评论(0) 推荐(0) 编辑
摘要:目录1. 接口的本质2. 测试的重点3. 接口的测试场景4. 是否需要为接口编写测试用例?5. 总结 在 Go 语言中,接口本身不需要编写测试用例,因为接口只是一个抽象的定义,它没有具体的实现逻辑。接口的测试重点在于测试实现了该接口的具体类型(即结构体或其他类型)是否正确地实现了接口定义的方法。 以 阅读全文
posted @ 2025-01-21 17:18 guanyubo 阅读(8) 评论(0) 推荐(0) 编辑
摘要:目录单元测试可测试接口面向接口 单元测试 一个代码质量和工程质量有保证的项目一定有比较合理的单元测试覆盖率,没有单元测试的项目一定是不合格的或者不重要的,单元测试应该是所有项目都必须有的代码,每一个单元测试都表示一个可能发生的情况,单元测试就是业务逻辑。 可测试 写代码并不是一件多困难的事情,不过想 阅读全文
posted @ 2025-01-21 16:10 guanyubo 阅读(9) 评论(0) 推荐(0) 编辑
摘要:目录GoMonkey单元测试框架安装基本使用1. 为函数打桩ApplyFuncApplyFuncReturn2. 为公共成员方法打桩ApplyMethodApplyMethodReturn3. 为私有成员方法打桩ApplyPrivateMethod注意事项示例 GoMonkey单元测试框架 GoMo 阅读全文
posted @ 2025-01-17 10:45 guanyubo 阅读(77) 评论(0) 推荐(0) 编辑
摘要:目录工具链差异环境配置差异实际使用中的差异 ‌在Windows和Linux下使用Golang中的cgo功能时,主要区别在于所需的C/C++构建工具链和编译环境配置。‌ 工具链差异 ‌Linux‌:在Linux系统上,使用cgo特性需要安装GCC编译器。GCC是Linux系统上常用的C/C++编译器, 阅读全文
posted @ 2025-01-15 17:46 guanyubo 阅读(55) 评论(0) 推荐(0) 编辑
摘要:目录1. 工作池模式(Worker Pool Pattern)2. 扇出扇入模式(Fan-Out Fan-In Pattern)3. 管道模式(Pipeline Pattern)4. 使用上下文(Context)进行取消操作5. 错误组模式(ErrGroup Pattern) 1. 工作池模式(Wo 阅读全文
posted @ 2025-01-10 08:19 guanyubo 阅读(24) 评论(0) 推荐(0) 编辑
摘要:目录GPM模型GPM模型的工作流程特殊的M0和G0P队列为空的处理策略知识点 GPM模型 GPM模型是Go语言运行时系统中用来管理和调度大量goroutine的核心机制。在这个模型里: G(Goroutine):代表协程,即Go语言中的轻量级线程。它们由Go运行时自动管理,可以非常高效地创建和销毁, 阅读全文
posted @ 2024-12-30 09:57 guanyubo 阅读(107) 评论(0) 推荐(1) 编辑
摘要:目录一、检查并启用核心文件生成二、指定核心文件生成路径三、使用GDB调试核心文件 一、检查并启用核心文件生成 查看当前核心文件大小限制: 使用命令 ulimit -c 来查看系统允许的核心文件大小。如果返回值为0,则表示不生成核心文件。 临时设置无限制的核心文件大小: 在当前shell会话中执行 u 阅读全文
posted @ 2024-12-23 14:36 guanyubo 阅读(278) 评论(0) 推荐(0) 编辑
摘要:目录1. 缺少必要的 C 开发工具或库2. 环境变量设置不正确3. 缺少 C 库或头文件4. gopls 设置问题5. 构建标签 (Build Tags)6. 编辑器支持7. 测试和验证 如果 gopls 忽略了包含 cgo 代码的文件,这可能是由于几个原因导致的。cgo 允许 Go 代码调用 C 阅读全文
posted @ 2024-12-23 14:01 guanyubo 阅读(125) 评论(0) 推荐(0) 编辑
摘要:目录方法一:使用包管理器安装(推荐对于大多数用户)对于基于 Debian/Ubuntu 的系统:对于基于 Red Hat/CentOS 的系统:方法二:从官方网站下载并手动安装(推荐对于需要特定版本的用户) 在 Linux 上安装 Go(Golang)可以通过以下几种方式进行。以下是两种最常用的方法 阅读全文
posted @ 2024-12-23 13:09 guanyubo 阅读(442) 评论(0) 推荐(0) 编辑
摘要:目录安装常用操作 安装 go-torch 是一个用于分析 Go 程序性能的工具,它可以生成火焰图(Flame Graphs)来帮助分析 CPU 的使用情况。 要安装 go-torch,你需要先安装 Go 语言环境,并设置好 GOPATH 环境变量。然后使用 go get 命令来安装 go-torch 阅读全文
posted @ 2024-12-19 09:13 guanyubo 阅读(131) 评论(0) 推荐(0) 编辑
摘要:目录1. 代码生成2. 类型转换3. 函数调用4. 内存管理5. 编译和链接6. 运行时7. 并发和线程8. 错误处理示例代码总结 Cgo 是 Go 语言中用于调用 C 代码的工具,其底层工作原理涉及 Go 和 C 之间的交互。以下是 Cgo 的主要工作原理: 1. 代码生成 Cgo 预处理:Cgo 阅读全文
posted @ 2024-12-19 09:11 guanyubo 阅读(27) 评论(0) 推荐(0) 编辑
摘要:目录测试代码使用方法CPU利用率图形化常用操作 测试代码 package main import ( "bytes" "log" "math/rand" "net/http" _ "net/http/pprof" "time" ) // 生成一个随机字符串 func genSomeBytes() * 阅读全文
posted @ 2024-12-18 09:22 guanyubo 阅读(256) 评论(0) 推荐(0) 编辑
摘要:目录Go Test 简介单元测试基准测试示例测试测试覆盖率生成HTML覆盖率报告其他有用的选项 Go语言自带了一个强大的测试框架,它通过go test命令来运行测试。这个工具可以执行单元测试、性能测试(基准测试)、示例测试,并且支持测试覆盖率的统计和报告生成。 Go Test 简介 单元测试 单元测 阅读全文
posted @ 2024-12-06 15:38 guanyubo 阅读(48) 评论(0) 推荐(0) 编辑
摘要:目录eface (empty face)iface (interface face)总结 在Go语言的内部实现中,接口(interface)有两种不同的底层表示形式:eface 和 iface。这两种结构用于支持空接口(interface{})和具体类型的接口。了解它们的区别有助于更深入地理解Go语 阅读全文
posted @ 2024-12-03 09:08 guanyubo 阅读(69) 评论(0) 推荐(0) 编辑
摘要:目录函数方法示例对比函数示例方法示例总结值接收者使用场景特点指针接收者使用场景特点总结值接收者使用方法示例代码指针接收者使用方法示例代码总结 在Go语言中,方法和函数是两个不同的概念,尽管它们看起来相似。主要的区别在于它们的定义方式以及与类型的关系。让我们用简单的方式来解释这两者的区别: 函数 定义 阅读全文
posted @ 2024-12-02 17:32 guanyubo 阅读(71) 评论(0) 推荐(0) 编辑
摘要:目录通俗的解释详细介绍值接收者 vs. 指针接收者 通俗的解释 想象一下你在一个动物园工作,你的任务是照顾所有会“嘎嘎”叫的动物。在现实生活中,你会怎么判断一个动物会不会“嘎嘎”叫呢?很简单,你只需要听它叫一次就知道了。如果你听到“嘎嘎”,那不管它是鸭子、鹅还是其他什么动物,对于你的任务来说,它就是 阅读全文
posted @ 2024-12-02 17:03 guanyubo 阅读(60) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示