成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

令人激動!Go 泛型代碼合入 Master(附嘗鮮方法)

開發(fā) 后端
在 GopherCon 2020 Go Team AMA 時,要在今年底要能有生產(chǎn)環(huán)境的試用版上線,這是 rsc 所提出的一個管理目標(biāo)。

[[384484]]

本文轉(zhuǎn)載自微信公眾號「腦子進煎魚了」,作者陳煎魚。轉(zhuǎn)載本文請聯(lián)系腦子進煎魚了公眾號。

大家好,我是慢一拍的后方記者煎魚。

按照先前官方和文章的說法,Go 泛型預(yù)計是在 Go1.18 正式釋出。

 

在 GopherCon 2020 Go Team AMA 時,要在今年底要能有生產(chǎn)環(huán)境的試用版上線,這是 rsc 所提出的一個管理目標(biāo)。

轉(zhuǎn)折點

近期出現(xiàn)了一個新的轉(zhuǎn)折點,能夠讓大家在主干分支(master)上就能享受到泛型的功能。

 

而 master 分支對應(yīng)了 Go1.17 的版本。因此未來將可以在 Go1.17 使用到泛型,這是一個比較驚喜的事情。

原因

這件事情為什么會突然發(fā)生呢?一切都得從背景說起。原本 Go 泛型是一直在 dev.typeparams 分支上進行研討和開發(fā)。

由于泛型不是簡單的一兩個模塊的代碼變更,而是涉及大量的代碼變更。

因此需要經(jīng)常保持與 master 分支的代碼同步(近兩個月共 20+ 次),會涉及代碼沖突/合并的處理。

且對于一些沖突的模塊他們也不熟悉(很熟悉的感覺有沒有),所以期望遷移到 master 分支上進行開發(fā)。

如何不影響既有功能

這類提前放入主版本的操作,在 Go 語言中并不少見。像是現(xiàn)在所見的 GO111MODULE,早期的GO15VENDOREXPERIMENT 都有些這么個味道。都是逐步入場,分階段使用,等確定成熟、完善后再漸漸去掉。

因此本次泛型也采取了這種方法,按照提案,目前使用的是 -G 標(biāo)識做為泛型的開關(guān)。

計劃如下:

  • -G=0:繼續(xù)使用傳統(tǒng)的類型檢查器。
  • -G=1:使用 type2,但不支持泛型。
  • -G=2:使用 type2,支持泛型。

在完成 types2 的錯誤和現(xiàn)有的錯誤的開發(fā)協(xié)調(diào)后,計劃在 Go 1.17 將 -G=1 設(shè)置為默認值。

未來也許可以在 Go 1.18 中放棄對 -G=0 的支持,這樣后續(xù)在默認啟用 -G=2 上會變得更容易。

在 Go1.17 嘗鮮

在 Go1.17 嘗鮮,也就意味著需要拉取 Go 語言的 master 分支的代碼,Go1.17 現(xiàn)在正處于開發(fā)階段:

 

我們可以通過 gotip 來達到下載 master 分支代碼的目的:

  1. $ go get golang.org/dl/gotip 
  2. $ gotip download 
  3. From https://go.googlesource.com/go 
  4.  * branch            master     -> FETCH_HEAD 
  5.    44361140c0..d9fd38e68b master     -> origin/master 
  6. Previous HEAD position was 44361140c0 embed: update docs for proposal tweaks 
  7. ... 

在拉取完畢后可以執(zhí)行 gotip version 查看所拉取的版本(commit-id):

  1. $ gotip version 
  2. go version devel +d9fd38e68b Sat Feb 27 03:03:29 2021 +0000 darwin/amd64 

在確定 gotip 正常后,我們就可以編寫泛型的示例代碼了,如下:

  1. func Print[T any](s []T) { 
  2.  for _, v := range s { 
  3.   fmt.Print(v) 
  4.  } 
  5.  
  6. func main() { 
  7.  Print([]string{"腦子進, ""煎魚了\n"}) 

如果執(zhí)行像往常那樣執(zhí)行,是會直接提示無法識別泛型的一些標(biāo)識符:

  1. $ gotip run main.go  
  2. # command-line-arguments 
  3. ./main.go:7:6: missing function body 
  4. ./main.go:7:11: syntax error: unexpected [, expecting ( 

結(jié)合上文的解析,我們需要指定 -G 標(biāo)識,就可以運行了。如下:

  1. $ gotip run -gcflags=all=-G=3 main.go  
  2. # command-line-arguments 
  3. ./main.go:7:6: internal compiler error: Cannot export a generic function (yet): Print 

顯然,正確的走進泛型的邏輯里去了,雖然愉快的報錯了,但 Matthew Dempsky 表示這很正常,畢竟 Go 泛型還在開發(fā)階段。

可能會有的小伙伴注意到,-G 指定的是 3,與前文所述不符。這與早期的編碼有關(guān):

 

已經(jīng)提了 CL 變更,只是代碼沖突了,待解決。

總結(jié)

Go 語言的泛型開發(fā)計劃已經(jīng)比較明確。首先合入 master 分支,再逐步完成開發(fā),逐步開放。

再進行 -G 默認值的調(diào)整,最后在泛型完善后就默認開啟,把 -G 標(biāo)識徹底去掉。

細品,與 Go modules 的方向是不是差不多。一開始 GO111MODULE 需要手動開啟 on(也就是默認 off),再到 Go1.16 GO111MODULE 默認為 on。

以此完成了一個正反饋的循環(huán),逐步開放,接受社區(qū)反饋和開發(fā)調(diào)整。

 

結(jié)論,Go 泛型指日可待了。

 

責(zé)任編輯:武曉燕 來源: 腦子進煎魚了
相關(guān)推薦

2018-06-12 16:47:35

語音UI音箱

2020-04-10 14:15:27

Ubuntu 20.0Linux命令

2016-03-23 10:06:18

2013-02-25 10:02:40

HTML5Web

2013-07-24 17:28:02

HTML5預(yù)測

2013-02-25 09:16:12

HTML5WebCSS

2022-05-02 14:53:59

Plasma桌面環(huán)境KD

2021-09-29 18:17:30

Go泛型語言

2010-01-13 16:44:03

C++

2023-11-29 08:19:45

Go泛型缺陷

2025-01-15 10:44:55

Go泛型接口

2024-10-28 00:40:49

Go語法版本

2022-03-28 13:34:26

Go泛型部署泛型

2021-11-27 22:20:13

SlicesGo泛型

2023-11-03 14:02:04

Go切片泛型庫

2021-12-15 10:23:56

Go 1.18 Bet語言泛型

2021-12-05 23:45:23

Go泛型Maps

2022-04-15 09:55:59

Go 泛型Go 程序函數(shù)

2021-12-01 08:29:17

Go泛型Maps

2022-03-29 11:48:40

Go泛型測試
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日本公妇乱淫xxxⅹ 国产在线不卡 | 亚洲精品国产成人 | 成人午夜性成交 | 四虎最新| 成人福利在线 | 精品一区二区久久久久久久网站 | 国产精品毛片av一区 | 日韩高清一区二区 | 久久精品网 | 国产精品永久久久久 | 日本特黄a级高清免费大片 国产精品久久性 | 色视频在线播放 | 国产精品成人久久久久 | 亚洲视频免费在线观看 | 老外几下就让我高潮了 | 欧美日批 | 91精品一区二区三区久久久久 | 日日操夜夜操天天操 | 久久一区二区av | 极品的亚洲 | 国产精品久久国产精品 | 日日噜噜噜夜夜爽爽狠狠视频, | 国产精品高潮呻吟久久 | 久久久久久99 | 欧美一级免费 | 国产精品99久久久久久宅男 | 亚洲精品福利在线 | 日本特黄a级高清免费大片 成年人黄色小视频 | 国产在线精品一区二区 | www.色53色.com | 欧美jizzhd精品欧美巨大免费 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 久在线| 久久久免费少妇高潮毛片 | 久久精品毛片 | 国产精品久久久久无码av | 成人免费大片黄在线播放 | 丁香婷婷在线视频 | 在线观看av网站 | a级在线| 日本一区二区三区免费观看 |