分类 Go 中的文章

Go 泛型编程:泛型设计

原文链接:https://golang3.eddycjy.com/posts/generics/ 引言 Go1.18 的泛型是闹得沸沸扬扬,如今已经基本成型,就由煎鱼带大家一起摸透 Go 泛型。 本文内容主要涉及泛型的 3 大设……

阅读全文

如何获取Go服务依赖包

在服务治理中,我们有时需要统计业务方服务的依赖包版本号使用情况,以便进行升级和版本兼容,通过 Go 官方提供的 debug.ReadBuildInfo 可以很方便的实现。 debug.ReadBuildInfo ReadBuildInfo 是 Go 标准库提供的方法,通过该方法可以读取打包程序的构建信息,里面就包括我……

阅读全文

Go1.16新特性|标准库和其他变化

支持静态资源嵌入 参见之前的文章:Go1.16新特性|embed静态资源嵌入 新增 io/fs 的支持 Go 1.16 标准库新增 io/fs 包,并定义了一个 fs.File 接口用于表示一个只读文件树 (tree of file) 的抽象。 io/fs 包的两个最重要的接口如下: 1 2 3 4 5 6……

阅读全文

Go1.16新特性|Module功能新变化

Module 功能默认开启 在 Go 1.16 版本中,Go module-aware 模式成为了默认模式 (另一种则是传统的 gopath 模式)。module-aware 模式成为默认意味着什么呢?意味着 GO111MODULE 的值默认为 on 了。 这里将 Go 1.13 版本之前、Go 1.13 版本以及 Go 1.16 版本在 GO111MODULE……

阅读全文

Go1.16新特性|embed静态资源嵌入[转]

本文转自:https://colobu.com/2021/01/17/go-embed-tutorial/,并稍作修改。 Go 编译的程序非常适合部署,如果没有通过 CGO 引用其它的库的话,我们一般编译出来的可执……

阅读全文

sentinel-go 之熔断降级

在高可用设计中,除了流控外,对分布式系统调用链路中不稳定的资源(比如 RPC 服务等)进行熔断降级也是保障高可用的重要措施之一。 现代微服务架构基本都是分布式的,整个分布式系统由非常多的微服务组成。不同服务之间……

阅读全文

sentinel-go 之流量控制

最近考虑把工作中手头的一个鉴权服务加上限流的能力,由于接入业务方越来越多,服务的负载也越来越大,除了扩容外,服务本身也需要有限流降级的自我保护能力,避免被瞬时的流量高峰击垮,从而保障服务的高可用性。 sentinel-go……

阅读全文

[转]Go语言如何使用条件编译

当开发需要依赖底层平台或处理器体系特性的Go包时,提供对应的特定实现是非常有必要的。 Go没有预处理,没有宏定义系统,不可以像c语言那样使用#define来控制是否包含平台相关的特定代码。作为替代,Go……

阅读全文

Go源码阅读 | channel 设计与实现

本文基于 Go1.14 源码阅读 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91……

阅读全文