首页
学习
活动
专区
圈层
工具
发布

#go

静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言

Go反射:性能瓶颈与零拷贝优化

Fgaoxing

做Go开发的,肯定少不了用反射——解析Tag、拿字段偏移、获取类型信息,ORM、序列化、配置绑定这些地方都要用到。

300

Go 的语言设计天然不适合复杂业务系统抽象

JanYork_简昀

当你需要 Clean Architecture、DDD、Hexagonal、AOP、IoC 这类方法论来治理复杂系统时,Go 的克制设计通常会让这些方法论更依赖...

6010

别再误会了!Go语言中的go.sum其实不是锁文件

技术圈

当你在GOMODULE模式下引入一个新的依赖时,Go工具链会下载依赖包并计算其哈希值。在更新go.sum之前,为了确保下载的依赖包是真实可靠的,go命令会查询G...

7810

Go语言中的//export:让你的Go函数被C调用!

技术圈

在日常开发中,我们有时会遇到这样的场景:需要用C语言调用Go语言编写的函数。这时,//export 指令就派上了用场。

8310

重新思考Go:写了十年代码后,Dave Cheney 保留的4个非常规习惯

萝卜要努力

作为软件工程师,我们都在努力编写整洁、可维护且易于测试的代码。我们遵循最佳实践,阅读软件设计书籍,并进行严格的代码审查。但如果我们一些根深蒂固的习惯实际上是隐蔽...

8010

Go 能同时提供 HTTP 和 WebSocket 服务吗?

技术圈

在实时应用开发中,我们常需要同时提供 HTTP 接口(用于常规请求)和 WebSocket 服务(用于实时双向通信)。那 Go 语言能否高效兼顾这两者?答案是:...

7210

深入浅出:Go语言中的unsafe.Pointer与uintptr

技术圈

在日常的Go语言开发中,我们大多数时候都在与类型安全的代码打交道。但当你需要与底层系统交互、进行高性能优化或处理特殊场景时,就不得不接触Go语言中的"禁区"——...

7510

如何写好 Go 项目中的 Makefile ?

技术圈

在日常的Go项目开发中,你是否经常遇到这样的场景:反复输入一长串go build命令,需要记住复杂的编译参数,或者团队中不同成员使用的构建命令不一致?这些痛点都...

7210

Go语言中结构体和结构体指针调用有什么区别?

技术圈

在日常Go开发中,我们经常面临这样的选择:到底该使用结构体还是结构体指针?这篇文章就来聊聊这个话题,帮助大家彻底理解它们的区别和使用场景。

11210

面试题:Go语言中,一个协程能干掉另一个协程吗?

技术圈

在日常使用Go语言进行开发时,我们经常会使用goroutine来实现并发操作。但很多开发者可能会思考一个问题:我能否在一个goroutine中直接终止另一个go...

7610

在 Go 语言中字符串 len 为0 和字符串为空,该用哪个更好?

技术圈

在日常的Go语言开发中,判断字符串是否为空是最常见的操作之一。你会发现代码中主要有两种写法:len(s) == 0 和 s == ""。你是否和我有同样的困惑,...

7610

Go语言中的//go:到底是什么?

技术圈

在日常阅读Go语言源码时,我们经常会看到各种以//go:开头的特殊注释。这些看似普通的注释,实际上是Go编译器提供的一组强大工具,它们可以直接影响编译过程,优化...

8010

Go map缩容机制:原来这是“伪缩容”?

技术圈

在Go语言开发中,map是高频使用的键值对容器,大家对它的扩容机制可能比较熟悉,但缩容机制却常常被忽略。不少开发者会误以为“删除元素就会释放内存”,实则Go m...

11910

Go日志写入文件:到底要不要加锁?

技术圈

其中writeLock()为全程互斥锁,单个goroutine启动写入后,其他goroutine读写操作被阻塞,直至锁释放。此特性保障单次写入独占性,为字符完整...

7810

解决Go语言相对路径不一致问题的最佳实践

技术圈

在Go开发中,相对路径引用不一致是常见问题:本地go run main.go正常,打包二进制或换目录启动则易出现“文件找不到”。

8410

Go语言中 any 能否完全取代 interface{}?

技术圈

在日常Go语言开发中,我们经常会遇到any和interface{}这两种表示"任意类型"的方式。自从 Go 1.18 引入泛型后,any这个新关键字似乎正在逐渐...

6100

一文搞懂RPC、gRPC与Protobuf:分布式通信的核心技术栈

stark张宇

在分布式系统中,不同服务间的高效通信是核心需求之一。RPC、gRPC与Protobuf作为一套协同工作的技术组合,广泛应用于微服务、跨语言通信等场景。本文将逐一...

27640

Go 1.24 新特性:终于不用再“假装”管理开发工具依赖了!

GoLang学习记

在 Go 1.24 之前,如果你要在团队里统一用 air 做热重载、用 staticcheck 做静态检查、用 stringer 自动生成 String() 方...

7010

Go 语言不玩“继承”,它玩“鸭子类型”!

GoLang学习记

“如果它走起来像鸭子,叫起来也像鸭子,那它就是鸭子。” —— Go 语言的接口哲学

8810
领券