分类 golang 中的文章

Cobrautils: 让绑定参数更简单

Cobrautils: 让绑定参数更简单 建议点击 查看原文 查看最新内容。 原文链接: https://typonotes.com/posts/2024/03/29/cobrautils-bind-parameters/ 有群友说, python 命令行绑定参数方便。 本来没什么 还要顺口踩一脚 go 的参数绑定不方便。 这个能忍? CobraUtils 使用结构体绑定参数 cobra 绝对是命令行库中的第一梯队, kubectl 也是使用这个库实现的。 现在的问题是: 怎么才能 快速方便 的绑定参数呢? 那就必须用 反射 实……

阅读全文

几种封装 HTTP Authorization 的分装方式

几种封装 HTTP Authorization 的分装方式 建议点击 查看原文 查看最新内容。 原文链接: https://typonotes.com/posts/2024/01/25/authz-in-http-request/ 大家都知道, 在做 HTTP 请求的时候, 通常需要提供 账号名和密码, 例如 1 $ curl -u username:password http://api.example.com 其实, 这种就是 HTTP Authentication 中的 Basic 模式(Schema) 翻译一下 首先将账号密码使用 冒号: 链接 随后进行 base64 编码 最后放在 Header 的 Authorization 中。 1 2 $ val=base64("username:password") $ curl -H "Authorization: Basic ${username:password} http://api.example.com 除了 Basic 之外……

阅读全文

Golang 使用 inline 处理 JSON/YAML 内联字段的 2 点注意事项

Golang 使用 inline 处理 JSON/YAML 内联字段的 2 点注意事项 建议点击 查看原文 查看最新内容。 原文链接: https://typonotes.com/posts/2024/01/09/golang-tag-inline/ 这是一片错误笔记, 没什么高大上的东西。 简单记录一下在 Go 中使用 json 和 yaml 在解析字符串的时候没有太注意的一个点。 以 Json 为例, 通常我们在 struct结构 与 Json结构 的时候是 一一对应 的。 以下几种名字都是我自己取的,……

阅读全文

如何实现 Http Request Body 多次读取

如何实现 Http Request Body 多次读取 建议点击 查看原文 查看最新内容。 原文链接: https://typonotes.com/posts/2024/01/02/http-request-multiple-times-read/ 最近在使用 gin 的时候, 踩了一个重复读取的 Request.Body 的坑。 起因是 gin 的 gin.Context{} 提供了 c.Copy() 方法创建副本。 这个方法一直在用, 但不知道从什么时候开始, 一直认为这个方法是 深拷贝, 但 并不完全是 (T_T) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 // Copy returns a……

阅读全文

Golang Reflect Interface Deeopcopy

「Golang反射实战2」 使用 接口(interface) 实现 深拷贝(deepcopy) 如果在 公众号 文章发现状态为 已更新, 建议点击 查看原文 查看最新内容。 状态: 未更新 原文链接: https://typonotes.com/posts/2023/03/20/golang-reflect-interface-deeopcopy/ interface 接口 deepcopy 的实现 对于 接口 interface{} 就稍微麻烦一点了。 由于 接口 是一组方法的集合, 也就意味着 接口的 底层结构体 是不定的。 无……

阅读全文

Golang Context 值传递的生产案例(01): 链路追踪

Golang Context 生产应用案例(01): 链路追踪 如果在 公众号 文章发现状态为 已更新, 建议点击 查看原文 查看最新内容。 状态: 未更新 原文链接: https://typonotes.com/posts/2023/03/15/golang-context-in-action-trace/ 看完本文 了解 链路追踪 和 OpenTelemetry 相关知识 了解 Context 值传递是如何在 链路追踪 的发展历程上登台亮相的。 之前在 Golang 上下文 Context 源码解析(1): 值传递 文章中举了一个例子说明讲解 Context 的值传递……

阅读全文

「Golang 反射实战」 - 我用 Golang 反射写了一个配置库 - envutils , 应用再也不会少变量了

「Golang 反射实战」 - 我用 Golang 反射写了一个配置库 - envutils , 应用再也不会少变量了 原文链接: https://tangx.in/posts/2023/01/27/golang-envutils-config/ 用习惯了 struct 之后, 我想所有东西都通过 struct 管理。 学习了反射之后, 我总要找点事情做来练习。 于是我整合了 Golang环境变量操作 和 Golang反射, 以及解决了我认为的其他一些配置管理的痛点, 便有了这个项……

阅读全文

这些关于 Golang timezone 时区的坑, 我已经帮你踩过了

这些关于 Golang timezone 时区的坑, 我已经帮你踩过了 原文链接: https://tangx.in/posts/2023/01/09/golang-timezone-issue/ Golang 中一些不太注意的时区问题 1. time/tzdata 库 Golang 内置的一个时区文件。 可以在程序中任意位置被导入。 导入后, 如果程序 找不到本地 时区文件, 就会使用该库的数据。 本地 指的是 运行环境, 可能是实际的服务器, 也可能是容器。 通常, 应该在 main.go 中被导入。 如果是 库代码 则……

阅读全文

Golang 库: 为什么 Golang slog 库不支持 Fatal 了

Golang 库: 为什么 Golang slog 库不支持 slog.Fatal API 原文链接: https://tangx.in/posts/2023/01/06/why-dont-golang-slog-support-fatal-api/ 使用 slog 默认不支持 Fatal 如果直接把 slog 当成 log 使用, 会有一点点头疼 1 2 3 4 5 6 7 8 9 10 11 func main() { slog.Debug("debug") slog.Info("info") slog.Warn("warn") slog.Error("err", fmt.Errorf("game over")) // slog.Fatal("don't support") } // 2023/01/06 07:41:50 INFO info // 2023/01/06 07:41:50 WARN warn // 2023/01/06 07:41:50 ERROR err err="game over" slog 默认日志级别 是 info, 无法输出 DEBUG 日志。 需要自定义 handler 实现日志级别判断。 参考 Golang 库: 怎么使用 golang slog 设置日志……

阅读全文

Golang 库: 怎么使用 golang slog 设置日志 Debug 等级

Golang 库: 怎么使用 golang slog 设置日志 Debug 等级 原文链接: https://tangx.in/posts/2023/01/06/how-to-set-debug-level-in-golang-slog/ 在 golang 中, 日志统一 一直都是一个头疼的问题。 在 exp 中, Go 加入了一个 新库 exp/slog , 希望能转正。 这里有一些关于 slog 的介绍, 可以参考 Go 十年了,终于想起要统一 log 库了! 使用 slog 习惯误区, 默认日志级别是 Info 如果直接把 slog 当成 log 使用, 可能又一点问题。 1 2 3 4 5 6 7 8 9 10……

阅读全文

福利派送

  • (免费星球)「运维成长路线」

  • 又拍云免费 CDN

最近文章

分类

标签

其它