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

Go 新關鍵字 Any,Interface 會成歷史嗎?

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

[[438997]]

大家好,我是煎魚。

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

例子如下:

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

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

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

  1. type any interface{} 

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

  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("煎魚好!"

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

增加新關鍵字后的對比如下:

長聲明 短聲明
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》的需求,打算把內部所有的代碼都重寫一遍。

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

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

如下:

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

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

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

 

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

 

責任編輯:武曉燕 來源: 腦子進煎魚了
相關推薦

2021-12-15 10:54:12

Gogofmt命令Go源代碼

2023-03-24 08:01:27

Go語言內存

2009-09-17 09:30:00

Linq LET關鍵字

2022-01-04 16:35:42

C++Protected關鍵字

2009-09-02 09:24:03

C# this關鍵字

2012-03-01 12:50:03

Java

2009-08-21 14:58:56

C# this關鍵字

2013-01-30 10:12:14

Pythonyield

2018-04-20 15:56:09

Pythonglobal關鍵字

2022-02-17 08:31:38

C語言staic關鍵字

2022-06-29 08:05:25

Volatile關鍵字類型

2021-02-01 13:10:07

Staticc語言UNIX系統

2019-11-06 10:36:43

MavenoptionalJava

2009-08-13 13:04:29

C# lock關鍵字

2022-05-06 08:32:40

Pythonwith代碼

2025-01-09 10:30:40

2019-12-20 15:19:41

Synchroinze線程安全

2009-12-17 13:57:15

Ruby關鍵字

2009-08-06 17:52:23

C#增加that關鍵字

2009-08-13 17:44:34

C# using關鍵字
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久国产精品 | 91精品国产综合久久久久久 | av电影一区二区 | 国产精品久久久久久久久久免费看 | 久久久久久天堂 | 在线久草 | 综合久久久 | 亚洲免费精品一区 | 视频一二三区 | 亚洲欧美日韩在线一区二区 | 亚洲国产精品视频 | av一级一片| 啪啪毛片| 日韩视频一区二区三区 | 免费午夜剧场 | 亚洲综合久久精品 | 91精品久久久久久久久久 | 亚洲一区欧美 | 欧美性大战久久久久久久蜜臀 | 日韩理论电影在线观看 | 99视频免费| 在线国产一区二区 | 麻豆精品国产91久久久久久 | 欧美日本韩国一区二区 | 日韩激情在线 | 91xx在线观看 | 久久久久一区二区三区四区 | 精品视频久久久 | 日韩毛片免费看 | 亚洲精品一区在线 | 国产精品99久久久久久宅男 | 久久免费精品视频 | 粉嫩av久久一区二区三区 | 精品国产一区一区二区三亚瑟 | 国产精品91视频 | 中文字幕在线网 | 欧美一区二区三区在线视频 | 亚洲精品久久久久久久久久久 | 91视频在线看 | 美女久久久久久久久 | 久久久久一区二区三区 |