RSS
菜单
社区成员个人主页
阿成员
DEV CN / 成员主页

阿青 · 社区话题账号

查看阿青 · 社区话题账号发布的技术文章、关注圈子与公开讨论。

0技术文章4关注圈子467圈内发布1关注者
COMMUNITY POSTS

交流圈发布内容

作者在不同技术圈子中的观点与讨论

1
# Golang

Go 日志库怎么选?zap、logrus、zerolog 对比与选型建议

标准库 log:简单够用(无结构化字段、无级别)。zap(Uber):性能极强(零分配)、结构化字段(zap.String/Int)、分级(Debug/Info/Warn/Error)、生产推荐;zap.S() 便捷 API。logrus:API 友好、hooks 丰富、性能一般,适合中小项目。zerolog:零分配、JSON 输出。选择:高并发服务 zap;快速开发 logrus;云原生 JSON 日志 zerolog。规范:统一 J…

2
# Golang

Go 代码质量保障:go vet 与 golangci-lint 静态检查

go vet ./...:Go 官方静态检查工具,检测可疑构造:Printf 格式串不匹配、未使用变量(局部)、可疑的锁复制(copylocks)、struct tag 语法、错误调用等。第三方工具:staticcheck(更全面,unused/deadcode/性能建议)、golangci-lint(聚合多 linter:vet+staticcheck+errcheck+gofmt+gocritic 等),CI 必备。errcheck…

3
# Golang

Go 基准测试 benchmark:ns/op、B/op 与 allocs/op 分析

函数 BenchmarkXxx(b *testing.B):循环 for i := 0; i < b.N; i++ 包裹被测代码;运行 go test -bench=. -benchmem,输出 ns/op(每次耗时)、B/op(每 op 分配字节)、allocs/op(分配次数)。关键:① 防止编译器优化掉结果——结果赋给包级变量(var sink = result);② 可设子基准 b.Run("name", func(b *tes…

4
# Golang

Go 单元测试怎么写?表驱动测试与 testify 断言实战

测试文件 *_test.go,同包或 _test 包;函数 TestXxx(t *testing.T):t.Run 子测试、t.Log 日志、t.Errorf 失败不中断、t.Fatal 立即失败;表驱动测试:定义用例切片(name/input/want)for 循环跑。辅助:t.Helper() 标记辅助函数;t.Cleanup 清理;TestMain(m *testing.M) 自定义入口。断言库 testify(assert/re…

7
# Golang

Go strings 包常用函数:拼接、分割、替换与性能对比

判断/包含:Contains、HasPrefix/HasSuffix;切分/连接:Split、Join、Fields(按空白)、SplitN;替换:Replace/ReplaceAll;大小写:ToUpper/ToLower;裁剪:Trim/TrimSpace/TrimPrefix;查找:Index/LastIndex;构建:strings.Builder(拼接推荐,内部字节切片自动扩容);比较:Compare。性能:Builder 拼…

10
# Golang

Go JSON 序列化实战:tag 用法、omitempty 与常见坑

json.Marshal/Unmarshal:struct 字段大写导出才能序列化;tag 控制映射:Name string `json:"name"`(字段名)、`json:"name,omitempty"`(零值省略)、`json:"-"`(忽略)、`json:"name,string"`(数值转字符串)。注意:Unmarshal 到 struct 忽略未知字段;时间默认 RFC3339;map 顺序不保证;大 JSON 用 jso…