Google:12 条 Golang 最佳实践
这是直接总结好的 12 条,详细的再继续往下看:
- 先处理错误避免嵌套
- 尽量避免重复
- 先写最重要的代码
- 给代码写文档注释
- 命名尽可能简洁
- 使用多文件包
- 使用
go get
可获取你的包 - 了解自己的需求
- 保持包的独立性
- 避免在内部使用并发
- 使用 Goroutine 管理状态
- 避免 Goroutine 泄露
Go 1.17 新特性:Go Module 的变化
自从 Go1.11 增加 Go Module 以来,每个版本都在不断改进 Module。Go1.17 也不例外。这次最主要的变化有两点:
- Module graph pruning:Module 依赖图修剪
- Lazy Loading:Module 延迟加载
golang怎么会变成这么火
程序员始终在寻找一种更加高效,安全的开发语言,高效表现在开发高效和运行高效,安全在于程序要要较少的去关注底层安全问题。当然还有其它的原因,比如:ide,构建,部署难易程度。简单说就是开发者体验。
Golang后台单元测mock网络测试
这是Go语言单元测试从零到溜系列教程的第1篇,介绍了如何使用httptest和gock工具进行网络测试。
在上一篇《Go单测从零到溜系列——0.单元测试基础》中,我们介绍了Go语言编写单元测试的基础内容。
而实际工作中的业务场景往往会比较复杂,无论我们的代码是作为server端对外提供服务或者还是我们依赖别人提供的网络服务(调用别人提供的API接口)的场景,我们通常都不想在测试过程中真正的建立网络连接。本文就专门介绍如何在上述两种场景下mock网络测试。
一文读懂go mod依赖管理
早期 Go 语言单纯使用 GOPATH 管理依赖,但 GOPATH 不方便管理依赖的多个版本,后来增加了 vendor,允许把项目依赖连同项目源码一起管理。
但是 vendor 也有不足,就是项目依赖关系不清楚,依赖包升级困难,这也催生了众多依赖管理的工具,呈现百家争鸣之势。
直到 GO 1.11,官方才推出了依赖管理工具 Go Module,逐渐一统江湖,从此 GO 依赖管理走向第3个时代。
Go语言中的程序实体
Go语言中的程序实体包括变量、常量、函数、结构体和接口。 Go语言是静态类型的编程语言,所以我们在声明变量或常量的时候,都需要指定它们的类型,或者给予足够的信息,这样才可以让Go语言能够推导出它们的类型。
理解真实项目中的 Go 并发 Bug
本文内容源于论文《Understanding Real-World Concurrency Bugs in Go》,从 6 个非常流行的开源项目中,收集了 171 个并发 bug,从传统的共享内存访问、Go 语言新的并发原语的特性方面入手,研究了并发 bug 产生的原因以及修复的方法,以便使 Go 研发人员更好的理解 Go 并发模型以及使用 Go 语言编写出更稳定、健壮的软件系统。
Go应用中优雅处理Error的几个技巧方法
Go语言很强大并且现在也十分流行 — 许多项目都是用Go语言来实现的,如Kubernetes。Go语言的一个有趣特性是它的多值返回功能提供了一种与其他编程语言不同的错误处理方法。Go将error视为具有预定义类型的值,其本身是一个interface类型。然而,编写大型应用时需要有包含更多上下文信息的error才有价值,而不仅仅是一个值。本文我们将探讨如何封装Go的error类型以在应用程序中带来更大的价值。