泛型沉思录:创建模版与使用模版生成代码

模版--》实现

泛型不会降低编译后的代码量。

所有实现都是编译器根据模版生成代码;

 

创建模版-〉复制(创建)类型-》使用类型。

 

一、泛型与语言

1、泛型只是语言(复用)层面的概念;

2、机器码和汇编没有泛型的概念;

3、语言处理过程(编译和解释)中,泛型会解释为具体的类型(数据类型和函数类型)。一个泛型经过编译器或解释器后,在可执行文件和运行时会存在多个具化副本。

 

二、泛型与具化

1、显式具化;

2、类型推导具化(根据函数参量、返回值具化)。

3、所有的具化方式在逻辑上都基于显式具化。

 

三、类型推导

1、基于泛型实现的类型推导

调用形式,推导出泛型的显式具化方式,进而由编译器推导编译为具体的实现方式。

 

2、基于泛型接口的推导

这种推导方式在函数时编程中常用。

高阶函数定义了实现函数的接口,实现函数根据需求具体定制。

 

其推导链条由如下方式:

高阶(泛型)函数—(参量)—>

高阶函数—(调用)—>

组件函数—(根据上下文)—>

推导参量类型—>

(实现)—根据参量类型实现具体功能

 

程序语言设计的过程中,Go 明显遇到了这样一个问题,是想要让程序员干活变慢,还是让编译器变慢,还是要运行速度变慢,或者更大的编译后的二进制文件。

https://www.zhihu.com/question/62991191

 

posted @ 2019-11-11 17:42  zzfx  阅读(120)  评论(0编辑  收藏  举报