分类 golang 中的文章

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……

阅读全文

golang deepcopy 的两种实现方式

Golang 实现深拷贝(DeepCopy)的两种方式 如果在 公众号 文章发现状态为 已更新, 建议点击 查看原文 查看最新内容。 状态: 未更新 原文链接: https://typonotes.com/posts/2021/12/14/golang-struct-interface-deepcopy/ golang deepcopy 的两种实现方式 最近在基于 gin 封装 rum-gonic - github web 框架的过程中,遇到了一个问题。 在注册路由的时候传递是 指针对象, 因此造成所有的 request 请求使用相同的 CreateUser 对象, 出现并发……

阅读全文

经过99次失败后, 我总结了几点 Golang 反射的经验(附源码)

经过99次失败后, 我总结了几点 Golang 反射的经验(附源码) golang 反射很好用, 也有很多坑。 代码在: https://github.com/tangx-labs/golang-reflect-demo Kind 和 Type 在 golang 的反射中, 有两个可以表示 类型 的关键字, Kind 和 Type 。 定义覆盖范围 Kind 的定义覆盖范围比 Type 要大。 Kind 在定义上要 更抽象, Type 要更具体。 可以简单理解为, 如果 Kind 是 车 , 那么 Type 可能是 公交车 、 消防车 内置类型字面……

阅读全文

太久没写, 都忘记了 golang slice 切片的完整表达式

太久没写, 都忘记了 golang slice 切片的完整表达式 原文链接: https://tangx.in/posts/2021/09/22/golang-slice-expressions/ 通常,我们写的 golang slice 边界只有两个数字 slice[1:3] , 这是一种简单写法。 而完整写法是 三个数字 slice[1:3:5] 简单表达式 一个冒号, 两个参数, 表示 slice 元素的 起止区间 1 a[low:high] 案例代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package main import ( "fmt" ) func main() { a := [5]int{1, 2, 3, 4, 5} s := a[1:4] // [2,3,4] fmt.Println(s) s1 :=……

阅读全文

一篇文章告诉你 golang 环境变量的所有基础操作

一篇文章告诉你 golang 环境变量的所有基础操作 原文链接: https://tangx.in/posts/2021/09/06/golang-os-env-operation/ golang 中的环境变量操作都在 os 包下面, 只有很少的几个方法, 而且字面意思也很明确。 所有环境变量操作对象都是 字符串string , 因此对于 int, bool 类型需要自己实现转换。 golang 程序执行的时候, 是在 linux 系统中 fork 的一种子进程中 golang程序 在 复制了开……

阅读全文

福利派送

  • 又拍云免费 CDN

最近文章

分类

标签

其它