最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go中的關(guān)鍵字any interface是否會成為歷史

 更新時間:2022年07月20日 09:59:19   作者:煎魚eddycjy  
這篇文章主要為大家介紹了Go中的關(guān)鍵字any interface是否會成為歷史的講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

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

示例

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

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

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

type any = interface{}

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

func f(a any) {
	switch a.(type) {
	case int:
		fmt.Println("進(jìn)腦子煎魚了")
	case float64:
		fmt.Println("煎魚進(jìn)腦子了")
	case string:
		fmt.Println("腦子進(jìn)煎魚了")
	}
}
func main() {
	f(2)
	f(3.1415)
	f("煎魚好!")
}

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

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

長聲明短聲明
func f[T interface{}](s []T) []Tfunc 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 進(jìn)行批量修改。

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

如下:

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

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

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

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

以上就是Go中的關(guān)鍵字any interface是否會成為歷史的詳細(xì)內(nèi)容,更多關(guān)于Go關(guān)鍵字any interface的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文帶你感受Go語言空結(jié)構(gòu)體的魔力

    一文帶你感受Go語言空結(jié)構(gòu)體的魔力

    在?Go?語言中,有一種特殊的用法可能讓許多人感到困惑,那就是空結(jié)構(gòu)體,本文將對Go空結(jié)構(gòu)體進(jìn)行詳解,準(zhǔn)備一杯你最喜歡的飲料或茶,隨著本文一探究竟吧
    2023-05-05
  • 使用Go語言實現(xiàn)發(fā)送微信群消息

    使用Go語言實現(xiàn)發(fā)送微信群消息

    這篇文章主要為大家詳細(xì)介紹了如何使用Go語言實現(xiàn)發(fā)送微信群消息,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • golang 40行代碼實現(xiàn)通用協(xié)程池

    golang 40行代碼實現(xiàn)通用協(xié)程池

    golang協(xié)程機(jī)制很方便的解決了并發(fā)編程的問題,但是協(xié)程并不是沒有開銷的,所以也需要適當(dāng)限制一下數(shù)量。這篇文章主要介紹了golang 40行代碼實現(xiàn)通用協(xié)程池,需要的朋友可以參考下
    2018-08-08
  • Golang flag包的具體使用

    Golang flag包的具體使用

    本文主要介紹了Golang flag包的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Go語言學(xué)習(xí)之JSON編碼解析與使用

    Go語言學(xué)習(xí)之JSON編碼解析與使用

    這篇文章主要為大家詳細(xì)介紹了Go語言中JSON編碼的解析與使用已經(jīng)JSON與Map、結(jié)構(gòu)體的互相轉(zhuǎn)化,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-02-02
  • 詳解如何使用Golang操作MongoDB數(shù)據(jù)庫

    詳解如何使用Golang操作MongoDB數(shù)據(jù)庫

    在現(xiàn)代開發(fā)中,數(shù)據(jù)存儲是一個至關(guān)重要的環(huán)節(jié),MongoDB作為一種NoSQL數(shù)據(jù)庫,提供了強(qiáng)大的功能和靈活的數(shù)據(jù)模型,與Golang的高性能和并發(fā)性能非常契合,本文將探討Golang與MongoDB的完美組合,介紹如何使用Golang操作MongoDB數(shù)據(jù)庫,需要的朋友可以參考下
    2023-11-11
  • win10下安裝Go和Goland的詳細(xì)教程

    win10下安裝Go和Goland的詳細(xì)教程

    這篇文章主要介紹了win10下安裝Go和Goland的詳細(xì)教程,本文給大家提到了go和golang之間的區(qū)別,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • golang中的net/http庫基本使用詳解

    golang中的net/http庫基本使用詳解

    今天給大家分享golang中的net/http庫基本使用方法,文章開頭給大家詳細(xì)介紹了標(biāo)準(zhǔn)庫net/http如何處理一個請求,結(jié)合實例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • Golang反射模塊reflect使用方式示例詳解

    Golang反射模塊reflect使用方式示例詳解

    Golang的反射功能,在很多場景都會用到,最基礎(chǔ)的莫過于rpc、orm跟json的編解碼,更復(fù)雜的可能會到做另外一門語言的虛擬機(jī),這篇文章主要介紹了Golang反射模塊reflect使用方式探索,需要的朋友可以參考下
    2023-01-01
  • go語言中http超時引發(fā)的事故解決

    go語言中http超時引發(fā)的事故解決

    我們使用的是golang標(biāo)準(zhǔn)庫的http client,對于一些http請求,我們在處理的時候,會考慮加上超時時間,如果超時可能會引起報錯,本文就記一次超時引發(fā)的事故
    2021-06-06

最新評論

剑川县| 永安市| 恩施市| 页游| 连云港市| 日喀则市| 本溪| 韶山市| 图木舒克市| 谢通门县| 乌拉特前旗| 那坡县| 罗城| 文化| 英吉沙县| 苗栗县| 兴海县| 桐梓县| 叙永县| 全南县| 荆州市| 海盐县| 晋中市| 密云县| 申扎县| 类乌齐县| 张家口市| 萨迦县| 新干县| 金秀| 济南市| 贵州省| 曲水县| 宁南县| 颍上县| 彭水| 章丘市| 晴隆县| 大兴区| 朝阳县| 丹寨县|