日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

十分鐘了解 Golang 泛型

來源: 責(zé)編: 時(shí)間:2024-06-19 15:36:46 153觀看
導(dǎo)讀可能有人會覺得Go泛型很難,因此想要借鑒其他語言(比如Java、NodeJS)的泛型實(shí)踐。事實(shí)上Go泛型很容易學(xué),本文希望能幫助讀者更好的理解Go泛型。注:本文不會將 Go 泛型與其他語言的泛型實(shí)現(xiàn)進(jìn)行比較,但會幫助你理解 Go 泛型元

可能有人會覺得Go泛型很難,因此想要借鑒其他語言(比如Java、NodeJS)的泛型實(shí)踐。事實(shí)上Go泛型很容易學(xué),本文希望能幫助讀者更好的理解Go泛型。0IB28資訊網(wǎng)——每日最新資訊28at.com

注:本文不會將 Go 泛型與其他語言的泛型實(shí)現(xiàn)進(jìn)行比較,但會幫助你理解 Go 泛型元素背后的上下文、結(jié)構(gòu)及其原理。0IB28資訊網(wǎng)——每日最新資訊28at.com

0IB28資訊網(wǎng)——每日最新資訊28at.com

0IB28資訊網(wǎng)——每日最新資訊28at.com

一、前置條件

要編寫本文中的示例代碼,需要:0IB28資訊網(wǎng)——每日最新資訊28at.com

  • 在計(jì)算機(jī)上安裝 Go 1.18+
  • 對Golang結(jié)構(gòu)、類型、函數(shù)和方法有最低限度的了解

二、概述

在 2020 年之前,Go泛型既是風(fēng)險(xiǎn)也是機(jī)遇。0IB28資訊網(wǎng)——每日最新資訊28at.com

當(dāng) Go 泛型在 2009 年左右被首次提出時(shí)(當(dāng)時(shí)該編程語言已經(jīng)公開),該特性是 Go 語言的主要弱點(diǎn)之一(Go 團(tuán)隊(duì)調(diào)查發(fā)現(xiàn))。0IB28資訊網(wǎng)——每日最新資訊28at.com

此后,Go 團(tuán)隊(duì)在 Go 草案設(shè)計(jì)中接受了許多泛型實(shí)現(xiàn),并在 Go 1.18 版本[2]中首次引入了泛型。0IB28資訊網(wǎng)——每日最新資訊28at.com

0IB28資訊網(wǎng)——每日最新資訊28at.com

Go 博客 2020 調(diào)查結(jié)果0IB28資訊網(wǎng)——每日最新資訊28at.com

Go 2020 調(diào)查顯示,自 Go 語言誕生以來,Go 社區(qū)一直要求引入泛型功能。0IB28資訊網(wǎng)——每日最新資訊28at.com

Go 開發(fā)人員(以及 Go 團(tuán)隊(duì)成員)看到這一缺陷阻礙了 Go 語言的發(fā)展,同時(shí),如果得到修復(fù),Go將具有更大的靈活性和性能。0IB28資訊網(wǎng)——每日最新資訊28at.com

1.什么是程序設(shè)計(jì)中的泛型?

根據(jù)維基百科[3]的解釋,泛型編程是一種計(jì)算機(jī)編程風(fēng)格,在這種編程風(fēng)格中,算法的具體類型可以在以后指定。0IB28資訊網(wǎng)——每日最新資訊28at.com

簡單解釋一下:泛型是一種可以與多種類型結(jié)合使用的類型,泛型函數(shù)是一種可以與多種類型結(jié)合使用的函數(shù)。0IB28資訊網(wǎng)——每日最新資訊28at.com

?? 簡單提一下:盡管"泛型"在過去和現(xiàn)在都可以通過 interface{}、反射包或代碼生成器在 Go 中實(shí)現(xiàn),但還是要提一下在使用這三種方法之前需要仔細(xì)考慮。0IB28資訊網(wǎng)——每日最新資訊28at.com

0IB28資訊網(wǎng)——每日最新資訊28at.com

為了幫助我們以實(shí)用的方式理解和學(xué)習(xí) Go 泛型,我們將在本文稍后部分提供示例代碼。0IB28資訊網(wǎng)——每日最新資訊28at.com

但要知道,既然 Go 泛型已經(jīng)可用,就可以消除模板代碼,不必?fù)?dān)心向后兼容問題,同時(shí)還能編寫可重用、類型安全和可維護(hù)的代碼。0IB28資訊網(wǎng)——每日最新資訊28at.com

2.那么......為什么需要 Go 泛型?

簡而言之,最多可提高 20% 性能。0IB28資訊網(wǎng)——每日最新資訊28at.com

根據(jù) Go 博客的描述,Go 泛型為 Go 語言增加了三個(gè)主要組件:0IB28資訊網(wǎng)——每日最新資訊28at.com

  • 函數(shù)和類型的類型參數(shù)。
  • 將接口類型定義為類型集,包括沒有方法的類型。
  • 類型推導(dǎo),允許在調(diào)用函數(shù)時(shí)省略類型參數(shù)。

3.在 Go 1.18 之前沒有這種功能嗎?

從技術(shù)上講,早在 Go 泛型發(fā)布之前,Go 就有一些處理"泛型"的方法:0IB28資訊網(wǎng)——每日最新資訊28at.com

  • 使用"泛型"代碼生成器生成 Go 軟件包,如 https://github.com/cheekybits/genny[4]
  • 使用帶有switch語句和類型轉(zhuǎn)換的接口
  • 使用帶有參數(shù)驗(yàn)證的反射軟件包

然而,與正式的Go泛型相比,這些方法還遠(yuǎn)遠(yuǎn)不夠,有如下缺點(diǎn):0IB28資訊網(wǎng)——每日最新資訊28at.com

  • 使用類型switch和轉(zhuǎn)換時(shí)性能較低
  • 類型安全損耗:接口和反射不是類型安全的,這意味著代碼可能會傳遞任何類型,而這些類型在編譯過程中會被忽略,從而在運(yùn)行時(shí)引起panic。
  • Go 項(xiàng)目構(gòu)建更復(fù)雜,編譯時(shí)間更長
  • 可能需要對調(diào)用代碼和函數(shù)代碼進(jìn)行類型斷言
  • 缺乏對自定義派生類型的支持
  • 代碼可讀性差(使用反射時(shí)更明顯)

本文鏈接:http://www.www897cc.com/showinfo-26-94852-0.html十分鐘了解 Golang 泛型

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 趕緊試試 Python 3.12 吧,真的好用

下一篇: 如何應(yīng)對Spring框架有三個(gè)主要陷阱

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 盧偉冰長文解析K60至尊版 對Redmi有著里程碑式的意義

    在今天的Redmi后性能時(shí)代戰(zhàn)略發(fā)布會結(jié)束之后,Redmi總經(jīng)理盧偉冰又帶來了一篇長文,詳解了為什么 Redmi 要開啟后性能時(shí)代?為什么選擇和 MediaTek、Pixelworks 深度合作?以及后性
  • 帥氣純真少年!日本最帥初中生選美冠軍出爐

    日本第一帥哥初一生選美大賽冠軍現(xiàn)已正式出爐,冠軍是來自千葉縣的宗田悠良。日本一直熱衷于各種選美大賽,從“最美JK”起到“最美女星&r
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業(yè) 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁“充值中心”入口上線了本機(jī)生活界面。壹覽商業(yè)發(fā)現(xiàn),該界面目前主要
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預(yù)警不絕,但處于厄爾尼諾大“烤”之下的除了眾生,還有各大企業(yè)發(fā)布的ESG報(bào)告。ESG是“環(huán)境保
  • 8月見!小米MIX Fold 3獲得3C認(rèn)證:支持67W快充

    這段時(shí)間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
  • 消息稱小米汽車開始篩選交付中心:需至少120個(gè)車位

    IT之家 7 月 7 日消息,日前,有微博簡介為“汽車行業(yè)從業(yè)者、長三角一體化擁護(hù)者”的微博用戶 @長三角行健者 發(fā)文表示,據(jù)經(jīng)銷商集團(tuán)反饋,小米汽車目前
  • 7月4日見!iQOO 11S官宣:“雞血版”驍龍8 Gen2+200W快充加持

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數(shù)亮相,而下半年即將推出的頂級旗艦已經(jīng)成為了數(shù)碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • 蘋果MacBook Pro 2021測試:仍不支持平滑滾動

    據(jù)10月30日9to5 Mac 消息報(bào)道,蘋果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后獲得了不錯(cuò)的評價(jià),亮點(diǎn)包括行業(yè)領(lǐng)先的性能,令人印象深刻的電池續(xù)航,精美豐
  • 中關(guān)村論壇11月25日開幕,15位諾獎級大咖將發(fā)表演講

    11月18日,記者從2022中關(guān)村論壇新聞發(fā)布會上獲悉,中關(guān)村論壇將于11月25至30日在京舉行。本屆中關(guān)村論壇由科學(xué)技術(shù)部、國家發(fā)展改革委、工業(yè)和信息化部、國務(wù)
Top 主站蜘蛛池模板: 黔江区| 乐东| 舒城县| 沁阳市| 井研县| 道真| 磐安县| SHOW| 靖远县| 叶城县| 姜堰市| 年辖:市辖区| 仙桃市| 稷山县| 永善县| 兰坪| 湖南省| 曲松县| 会昌县| 田东县| 英超| 丰台区| 营口市| 山东省| 丹江口市| 和政县| 琼结县| 田林县| 紫金县| 云梦县| 德安县| 津市市| 长兴县| 长治市| 满城县| 松溪县| 棋牌| 广水市| 拜城县| 增城市| 竹山县|