精选推荐

最新动态

如何在 Go 中实现跨平台的原子文件覆写

本文介绍一种不依赖第三方库、基于 `os.rename` 的跨平台原子文件覆写方案,通过临时文件+同目录重命名的方式,在 linux/macos 和 windows(ntfs,同卷)上均能保证写入操作的原子性与安全性。

Golang微服务容器化部署_Docker多阶段构建与K8s集成

Go 编译出的二进制本身是静态链接的,但如果你直接 FROM golang:1.22 并把源码 COPY 进去构建,最终镜像会带上整个 Go 工具链、$GOROOT、/usr/local/go 下所有东西——这不是运行时需要的,纯属浪费。

基于Consul实现K8s外部服务到内部微服务的发现映射

Consul 的 consul connect 服务网格和 K8s 原生的 CoreDNS 互不感知,K8s 内 Pod 默认解析不到 Consul 注册的服务名(比如 api.service.consul),反之亦然。这不是配置错了,而是两个系统在设计上就隔离——Consul 的 DNS 服务器监听 8600 端口,K8s 的 /etc/resolv.conf 里压根没它。

Go语言中实现最大堆与堆排序的正确方法

本文详解go语言中手动实现最大堆(max-heap)及堆排序的关键要点,重点纠正索引计算错误、堆化逻辑缺陷与排序流程漏洞,并提供可验证的完整代码示例。

如何在Golang中通过反射动态创建对象_Golang反射动态创建结构体与对象

Go 的 reflect.New 只接受 reflect.Type,且该类型必须是可寻址的——也就是不能直接传 struct 类型字面量,得传它的指针类型。常见错误是写 reflect.New(reflect.TypeOf(MyStruct{})),这会 panic:「panic: reflect: New(nil)」,因为 reflect.TypeOf(MyStruct{}) 返回的是值类型,而 reflect.New 要求的是类型本身(非接口、非 nil)。

如何在Golang项目中使用Go Modules_Golang Go Modules初始化与管理方法

Go 1.11+ 默认在 GOPATH 外自动启用模块模式,但项目根目录下没有 go.mod 文件就代表未初始化模块。运行 go env GO111MODULE 查看值:若为 off,则无论在哪都会禁用模块;on 强制启用;auto(默认)表示仅当不在 GOPATH/src 下且存在 go.mod 时才启用。