9

“能力越大,责任越大” - Go语言之父详解将于Go 1.18发布的Go泛型

 3 years ago
source link: https://mp.weixin.qq.com/s/SMT40557JgQ9FjUkswznlA
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

“能力越大,责任越大” - Go语言之父详解将于Go 1.18发布的Go泛型

Original 白明的赞赏账户 TonyBai 11/22
收录于话题
#go 43
#golang 43
#编程 35
#程序员 39
GopherCon2020上,Go语言之父发表演讲“Typing [Generic] Go”。介绍了Go泛型的最新变化、type parameter是如何满足Go现有类型系统的以及泛型代码的类型检查。本文回顾了整个go泛型的演化历史,整理了此次演讲重点内容并加上笔者的理解,分享给大家,希望能为大家理解Go泛型带来帮助。

Go语言之父

640?wx_fmt=png

在2020.11.9~11.13举行的全球最具影响力的Go语言技术大会GopherCon 2020上,Go语言之父之一的Robert Griesemer为全世界Gopher们带来了本次大会最重量级的演讲“Typing [Generic] Go”

640?wx_fmt=png
图:Robert Griesemer带来的有关Go泛型演讲

在这个演讲中,Robert Griesemer向Gopher们介绍了自从今年中旬在Go官网发表文章“The Next Step for Generics”以来Go泛型(Go Generics)技术草案的最新变化,并详细介绍了类型参数(type parameter)是如何满足Go现有的类型系统的,以及Go编译器是如何对Go泛型代码进行类型检查的。

本文整理了此次演讲的重点内容,供广大Gopher参考,希望能为大家理解Go泛型带来帮助。

一. 预备知识

为了更好地理解Robert Griesemer的讲解,这里先带着大家回顾一下Go generics技术草案演化史。

640?wx_fmt=png
图:Go泛型技术草案演化时间线

•2017年7月,Go核心团队领军人物Russ Cox在Gophercon 2017大会上发表演讲“Toward Go 2”,正式吹响Go向下一个阶段演化的号角;•2018年8月,在Gophercon 2018大会结束后不久,Go核心团队发布了Go2 draft proposal,这里面涵盖了由Ian Lance Taylor和Robert Griesemer操刀主写的Go泛型的第一版draft proposal。这版草案引入了contract关键字来定义泛型类型参数(type parameter)的约束、类型参数放在普通函数参数列表前面的小括号中,并用type关键字声明:

// 第一版泛型技术草案中的典型泛型语法contract stringer(x T) {    var s string = x.String()}func Stringify(type T stringer)(s []T) (ret []string) {}
收录于话题 #go
43个
上一篇 “Gopher部落”知识星球开球了 下一篇 没有VPS搭建govanityurls服务?别急!你依然可以自定义Go包导入路径

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK