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

Go 新關(guān)鍵字 Any,Interface 會成歷史嗎?

開發(fā) 后端
從使用層面來講,新的關(guān)鍵字 any 會比 interface{} 方便不少,畢竟少打了好多個詞,更快了,其實也是參照現(xiàn)有 rune 類型的做法。

[[438997]]

大家好,我是煎魚。

在看 Go1.18 泛型的代碼時,不知道是否有留意到一個新的關(guān)鍵字 any。

例子如下:

  1. func Print[T any](s []T) {} 

之前沒有專門提過,但有沒有小伙伴以為這個關(guān)鍵字,是泛型代碼專屬的?

其實不是...在這次新的 Go1.18 更新中,any 是作為一個新的關(guān)鍵字出現(xiàn),any 有一個真身,本質(zhì)上是 interface{} 的別名:

  1. type any interface{} 

也就是,在常規(guī)代碼中,也可以直接使用:

  1. func f(a any) { 
  2.  switch a.(type) { 
  3.  case int
  4.   fmt.Println("進腦子煎魚了"
  5.  case float64: 
  6.   fmt.Println("煎魚進腦子了"
  7.  case string: 
  8.   fmt.Println("腦子進煎魚了"
  9.  } 
  10.  
  11. func main() { 
  12.  f(2) 
  13.  f(3.1415) 
  14.  f("煎魚好!"

從使用層面來講,新的關(guān)鍵字 any 會比 interface{} 方便不少,畢竟少打了好多個詞,更快了,其實也是參照現(xiàn)有 rune 類型的做法。

增加新關(guān)鍵字后的對比如下:

長聲明 短聲明
func f[T interface{}](s []T) []T func f[T any](s []T) []T
func f(a interface{}) func f(a any)
var a interface{} var a any

我們在了解他的便利性后,再從代碼一致性和可讀性來講,是有些問題的,會造成一定的疑惑。

因此前兩天有人提出了《all: rewrite interface{} to any》的需求,打算把內(nèi)部所有的代碼都重寫一遍。

你可能會以為是人肉手工改?那肯定不是,Go 官方發(fā)起了 CL 進行批量修改。

我們在日常的工程中,也可以和他們一樣,直接借用 Go 工具鏈來實現(xiàn)替換。

如下:

  1. gofmt -w -r 'interface{} -> any' ./... 

聽到這個消息時,我的朋友咸魚就大驚了,在想 interface{} 會不會成為歷史,被新的關(guān)鍵字 any 完全替代?

顯然,答案是不會的。因為 Go1 有兼容性的保證,肯定不會在現(xiàn)階段刪除。不過后續(xù)會出現(xiàn)一個現(xiàn)象,就是我們的 Go 工程中,有人用 any,有人用 interface{},會在代碼可讀性上比較傷人。

 

不過我們也可以學(xué) Go 官方,在 linter 流程中借助 gofmt 工具來強行把所有 interface{} 都替換成 any 來實現(xiàn)代碼的一致性。

 

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

2021-12-15 10:54:12

Gogofmt命令Go源代碼

2023-03-24 08:01:27

Go語言內(nèi)存

2009-08-21 14:58:56

C# this關(guān)鍵字

2013-01-30 10:12:14

Pythonyield

2018-04-20 15:56:09

Pythonglobal關(guān)鍵字

2009-09-17 09:30:00

Linq LET關(guān)鍵字

2022-01-04 16:35:42

C++Protected關(guān)鍵字

2012-03-01 12:50:03

Java

2009-09-02 09:24:03

C# this關(guān)鍵字

2019-12-20 15:19:41

Synchroinze線程安全

2009-12-17 13:57:15

Ruby關(guān)鍵字

2009-08-06 17:52:23

C#增加that關(guān)鍵字

2009-08-13 17:44:34

C# using關(guān)鍵字

2009-08-26 15:16:29

C# lock關(guān)鍵字

2024-03-15 15:12:27

關(guān)鍵字底層代碼

2011-06-14 13:26:27

volatile

2021-08-06 07:51:47

關(guān)鍵字int函數(shù)

2009-08-21 14:47:59

C# base關(guān)鍵字

2022-01-10 18:11:42

C語言應(yīng)用技巧

2022-11-12 18:32:50

Golangomitemptyjson
點贊
收藏

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

主站蜘蛛池模板: 免费观看黄a一级视频 | 久久毛片 | 亚洲欧美在线免费观看 | 日本不卡一区二区三区在线观看 | 夜夜操天天干 | 成人在线视频一区二区三区 | 毛片站 | 久热国产精品 | 国产av毛片| 精品国产伦一区二区三区观看说明 | 一级免费毛片 | 欧美一a一片一级一片 | 国产午夜影院 | 欧美日韩看片 | 免费激情 | 不卡一二三区 | 欧美亚洲国产成人 | 999在线精品 | 成人亚洲片 | 欧美午夜精品 | 久久久久久高清 | 亚洲欧美在线视频 | 成人夜晚看av | 午夜精品一区二区三区在线观看 | 久久久成人一区二区免费影院 | 国产精品一区二区福利视频 | 国产精品视频网站 | 最新国产精品 | 人人九九精 | 亚洲三区在线 | 激情五月婷婷综合 | 日韩一区中文字幕 | 亚洲人成在线播放 | 天天干夜夜操 | 婷婷免费在线 | 亚洲第一色av | 国产aⅴ爽av久久久久久久 | 四虎永久免费地址 | 中文日韩字幕 | 99久久久久 | 久久精品一区二区三区四区 |