前一篇文章中我们简单介绍了约束条件的概念,知道了约束条件是通过接口来定义的。说到接口,大家都应该很熟悉了,它包含一组方法的声明,一个自定义类型只要实现了这组方法,就算实现了该接口。空接口`interface{}`没有声明任何方法,所以任意类型都实现了空接口。前一篇文章中我们展示了,当一个接口被用作约束条件时,泛型函数中只能使用该接口声明的方法。这对于一些自定义类型是没有问题的,但是对于一些内置类型来讲就不够用了。

阅读全文 »

时间过得飞快,不知不觉间春节假期已经过完了,我们又返回到工作岗位上。就在除夕当晚,Go1.18的第二个beta版发布了,正式版推迟到了3月份发布。之前我们曾经简单介绍过go1.17的泛型尝鲜,但是由于实现不完整,所以有太多的限制,也就没有太深入的去分析。这次的beta版到正式发布应该不会有重大变化了,所以我们赶在正式版发布之前再来聊聊泛型。

阅读全文 »

从非静态初始化开始,看init函数在初始化过程中如何发挥作用,了解包依赖关系的最终表现形式,以及runtime中包初始化的具体实现。最重要的是,编译器帮我们做了什么。

阅读全文 »

最近FT需要将后端服务架构接入全链路追踪平台,对于现存的新、老两套架构,我们分别使用了Context和gls,本文就简要的讨论一下这两者的实现原理。

阅读全文 »