搜索
搜索结果
50 results for "golang patterns"

golang-patterns
Idiomatic Go patterns, best practices, and conventions for building robust, efficient, and maintainable Go applications.
affaan-m
golang-patterns
用于构建健壮、高效且可维护的 Go 应用程序的地道 Go 模式、最佳实践和约定。
affaan-m
golang-design-patterns
地道的 Golang 设计模式——函数选项、构造函数、错误流与级联、资源管理与生命周期、优雅关闭、弹性、架构、依赖注入、数据处理、流式处理等。在明确选择架构模式、实现函数选项、设计构造函数 API、设置优雅关闭、应用弹性模式或询问哪种地道的 Go 模式适合特定问题时应用。
samber
golang-testing
Go testing patterns including table-driven tests, subtests, benchmarks, fuzzing, and test coverage. Follows TDD methodology with idiomatic Go practices.
affaan-m
golang-testing
Go 测试模式,包括表格驱动测试、子测试、基准测试、模糊测试和测试覆盖率。遵循 TDD 方法论和惯用的 Go 实践。
affaan-m
golang-pro
使用 goroutine 和 channel 实现并发 Go 模式,使用 gRPC 或 REST 设计和构建微服务,使用 pprof 优化 Go 应用性能,并通过泛型、接口和健壮的错误处理强制使用地道的 Go 语言。在构建需要并发编程、微服务架构或高性能系统的 Go 应用时使用。调用场景包括 goroutine、channel、Go 泛型、gRPC 集成、CLI 工具、基准测试或表格驱动测试。
jeffallan
golang-refactoring
Golang refactoring — the safe, at-scale process for restructuring existing Go code: a coverage-adaptive safety net, tool-driven behavior-preserving transforms (gopls Rename/Inline/Extract, `gofmt -r`, `eg`, `gopatch`, `go/analysis` fixers), the Fowler catalog mapped to Go, breaking import cycles, moving types across packages, and a human-in-the-loop workflow of small stacked PRs on a refactoring branch. Apply when code is hard to maintain, a function/type has grown too large, a code smell needs fixing, adding a feature is blocked by the current structure, or the user asks to clean up, refactor, or improve Go code — also for renaming at scale, extracting functions/interfaces, moving code between packages, splitting packages, or planning a multi-step refactor. Target styles owned elsewhere → See `samber/cc-skills-golang@golang-naming` (renames), `@golang-project-layout` (splits), `@golang-modernize` (idioms), `@golang-code-style` (control flow), `@golang-design-patterns` (patterns/DI).
samber
golang-performance
Golang 性能优化模式与方法论——如果存在 X 瓶颈,则应用 Y。涵盖内存分配减少、CPU 效率、内存布局、GC 调优、池化、缓存和热路径优化。当性能分析或基准测试已识别出瓶颈,且需要正确的优化模式来修复时使用。也用于执行性能代码审查,以提出改进建议或有助于快速识别性能提升的基准测试。不适用于测量方法论(→ 参见 `samber/cc-skills-golang@golang-benchmark` 技能)或调试工作流(→ 参见 `samber/cc-skills-golang@golang-troubleshooting` 技能)。
samber
golang-concurrency
Golang 并发模式。在编写或审查涉及 goroutine、channel、select、锁、同步原语、errgroup、singleflight、工作池或扇出/扇入管道的并发 Go 代码时使用。当检测到 goroutine 泄漏、竞态条件、channel 所有权问题,或需要在 channel 和互斥锁之间做出选择时也会触发。
samber
golang-naming
Go(Golang)命名规范——涵盖包、构造函数、结构体、接口、常量、枚举、错误、布尔值、接收器、getter/setter、函数选项、缩写、测试函数和子测试名称。在编写新的 Go 代码、审查或重构、选择命名替代方案(New vs NewTypeName、isConnected vs connected、ErrNotFound vs NotFoundError、StatusReady vs StatusUnknown 在 iota 0 处)、讨论 Go 包名(utils/helpers 反模式)或询问 Go 命名最佳实践时使用此技能。当用户提到 MixedCaps vs snake_case、ALL_CAPS 常量、getter 的 Get 前缀或错误字符串大小写时也会触发。请勿用于不涉及命名决策的通用 Go 实现问题。
samber
golang-modernize
将 Golang 代码现代化,使用最新的语言特性、标准库改进和惯用模式。在编写或审查 Go 代码并检测到旧式模式时,或遇到弃用警告时主动触发。当用户明确要求现代化、Go 版本升级或 CI/工具链刷新时也可使用。
samber
golang-troubleshooting
系统化地排查 Go 程序问题——找到并修复根本原因。在遇到 Go 代码中的错误、崩溃、死锁或意外行为时使用。涵盖调试方法论、常见 Go 陷阱、测试驱动调试、pprof 设置与捕获、Delve 调试器、竞态检测、GODEBUG 追踪以及生产环境调试。从任何“出问题了”的情况开始。不适用于分析性能剖析或基准测试(→ 参见 `samber/cc-skills-golang@golang-benchmark` 技能)或应用优化模式(→ 参见 `samber/cc-skills-golang@golang-performance` 技能)。
samber
golang-structs-interfaces
Golang 结构体和接口设计模式——组合、嵌入、类型断言、类型分支、接口隔离、通过接口进行依赖注入、结构体字段标签、指针接收者与值接收者。在设计 Go 类型、定义或实现接口、嵌入结构体或接口、编写类型断言或类型分支、为 JSON/YAML/DB 序列化添加结构体字段标签、或选择指针接收者与值接收者时使用此技能。当用户询问“接受接口,返回结构体”、编译时接口检查或组合小接口为大接口时也使用此技能。
samber
golang-cli
Golang CLI 应用程序开发。在构建、修改或审查 Go CLI 工具时使用——特别是命令结构、标志处理、配置分层、版本嵌入、退出码、I/O 模式、信号处理、Shell 补全、参数验证和 CLI 单元测试。当代码使用 cobra、viper 或 urfave/cli 时也会触发。对于 cobra 特定 API → 参见 `samber/cc-skills-golang@golang-spf13-cobra` 技能;对于 viper 配置分层 → 参见 `samber/cc-skills-golang@golang-spf13-viper` 技能。
samber
golang-grpc
提供gRPC使用指南、protobuf组织方式以及适用于Golang微服务的生产就绪模式。在实现、审查或调试gRPC服务器/客户端、编写proto文件、设置拦截器、使用状态码处理gRPC错误、配置TLS/mTLS、使用bufconn进行测试或处理流式RPC时使用。
samber
golang-benchmark
Golang 基准测试、性能分析和性能测量。用于编写、运行或比较 Go 基准测试,使用 pprof 分析热点路径,解释 CPU/内存/跟踪分析结果,使用 benchstat 分析结果,设置 CI 基准回归检测,或使用 Prometheus 运行时指标调查生产性能。当开发者需要对特定性能指标进行深入分析时也可使用——本技能提供测量方法,而 `samber/cc-skills-golang@golang-performance` 提供优化模式。
samber
golang-stretchr-testify
stretchr/testify 的全面指南,涵盖 Golang 测试中的 assert、require、mock 和 suite 包。适用于使用 testify 编写测试、创建 mock、设置测试套件或选择 assert 与 require 的场景。涵盖 testify 断言、mock 期望、参数匹配器、调用验证、套件生命周期以及 Eventually、JSONEq 和自定义匹配器等高级模式。当代码库导入 github.com/stretchr/testify 时应用。
samber
golang-samber-mo
使用 samber/mo 为 Golang 提供单子类型——Option、Result、Either、Future、IO、Task 和 State 类型,用于类型安全的可空值、错误处理和函数式组合,并包含管道子包。适用于使用或采用 samber/mo 时、代码库导入 `github.com/samber/mo` 时,或考虑将函数式编程模式作为 Golang 安全设计时。
samber
golang-spf13-cobra
使用 spf13/cobra 的 Golang CLI 命令树库 — cobra.Command、RunE 与 Run 对比、PersistentPreRunE 钩子链、Args 验证器(NoArgs、ExactArgs、MatchAll、自定义)、持久标志与局部标志、命令组、ValidArgsFunction、RegisterFlagCompletionFunc、ShellCompDirective、使用帮助模板自定义、man 页面和 Markdown 文档生成,以及使用 SetArgs/SetOut/SetErr 进行测试。当使用或采用 spf13/cobra,或代码库导入 `github.com/spf13/cobra` 时应用。关于与 cobra 配合使用的配置分层,请参见 `samber/cc-skills-golang@golang-spf13-viper` 技能。关于通用 CLI 架构(项目布局、退出码、信号处理、I/O 模式),请参见 `samber/cc-skills-golang@golang-cli`。
samber
golang-data-structures
Golang 数据结构 — 切片(内部机制、容量增长、预分配、slices 包)、映射(内部机制、哈希桶、maps 包)、数组、container/list/heap/ring、strings.Builder 与 bytes.Buffer、泛型集合、指针(unsafe.Pointer、weak.Pointer)以及复制语义。在选择或优化 Go 数据结构、实现泛型容器、使用 container/ 包、unsafe 或 weak 指针,或对切片/映射内部机制有疑问时使用。
samber
golang-code-style
Golang 代码风格约定——行长度与换行、变量声明、控制流清晰度、何时注释有益或有害。在编写或审查 Go 代码、询问风格或清晰度、或建立项目编码标准时使用。不适用于命名约定(→ 参见 `samber/cc-skills-golang@golang-naming` 技能)、linter 配置(→ 参见 `samber/cc-skills-golang@golang-lint` 技能)或文档注释(→ 参见 `samber/cc-skills-golang@golang-documentation` 技能)。
samber
golang-samber-lo
Golang 的函数式编程辅助工具库,基于 samber/lo — 500 多个类型安全的泛型函数,用于切片、映射、通道、字符串、数学、元组和并发(Map、Filter、Reduce、GroupBy、Chunk、Flatten、Find、Uniq 等)。核心不可变包(lo)、并发变体(lo/parallel 即 lop)、原地修改(lo/mutable 即 lom)、惰性迭代器(lo/it 即 loi,Go 1.23+)以及实验性 SIMD(lo/exp/simd)。适用于使用或采用 samber/lo 时、代码库导入 github.com/samber/lo 时、或在 Go 中实现函数式风格数据转换时。不适用于流式管道(→ 参见 `samber/cc-skills-golang@golang-samber-ro` 技能)。
samber
golang-safety
防御性 Golang 编码,防止恐慌、静默数据损坏和微妙的运行时错误。在遇到 nil 恐慌、append 别名、map 并发访问、浮点数比较陷阱或零值设计问题时使用。也用于审查代码的 nil 安全性、数值转换溢出、资源生命周期问题(循环中的 defer)或切片和映射的防御性复制。
samber
golang-error-handling
地道的 Golang 错误处理——创建、使用 %w 包装、errors.Is/As、errors.Join、自定义错误类型、哨兵错误、panic/recover、单一处理规则、使用 slog 的结构化日志、HTTP 请求日志中间件,以及用于生产环境错误的 samber/oops。旨在使日志在规模上可用于日志聚合第三方工具。在 Go 代码中创建、包装、检查或记录错误时应用。有关 samber/oops 的详细信息,请参阅 `samber/cc-skills-golang@golang-samber-oops` 技能;有关 slog 处理器生态系统,请参阅 `samber/cc-skills-golang@golang-samber-slog` 技能。
samber