91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Go語(yǔ)言的開(kāi)發(fā)者正著手準(zhǔn)備開(kāi)發(fā)2.0版本,程序員有太多話要說(shuō)

DPVg_AI_era ? 來(lái)源:未知 ? 作者:李倩 ? 2018-08-31 09:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Go 2.0預(yù)計(jì)公布,在今天HackerNews引發(fā)眾多討論,眾多Bug即將填補(bǔ),設(shè)計(jì)草案搶先預(yù)覽。

Go語(yǔ)言的開(kāi)發(fā)者正著手準(zhǔn)備開(kāi)發(fā)2.0版本,并從以下三個(gè)方面發(fā)布了初步的設(shè)計(jì)方案(非官方正式版),以供社區(qū)開(kāi)展討論:

泛型(generics)

錯(cuò)誤處理(error handling)

錯(cuò)誤值語(yǔ)義(error value semantics)

Go 2.0的總體目標(biāo)是解決無(wú)法擴(kuò)展到大型代碼庫(kù)以及無(wú)法滿足大型項(xiàng)目開(kāi)發(fā)人員需求等問(wèn)題。

泛型

改進(jìn)目標(biāo)

想必大多數(shù)用戶都對(duì)Go語(yǔ)言的泛型會(huì)表示無(wú)奈,很多網(wǎng)友甚至?xí)f(shuō)“根本就沒(méi)有泛型支持”。

Go 2.0的目標(biāo)是通過(guò)允許帶有類型參數(shù)的參數(shù)多態(tài)(parametric polymorphism)來(lái)解決編寫(xiě)Go庫(kù)的問(wèn)題。

除了預(yù)期的容器類型之外,還希望能夠編寫(xiě)有意義的庫(kù)來(lái)操作任意的map和channel值,并理想地編寫(xiě)能夠同時(shí)操作[ ]byte和string值的多態(tài)函數(shù)。

Go的泛型必須明確記錄對(duì)類型參數(shù)的約束,作為調(diào)用者和實(shí)現(xiàn)之間明確的強(qiáng)制協(xié)議。當(dāng)調(diào)用者不滿足這些約束或?qū)崿F(xiàn)超出限制時(shí),編譯器需將錯(cuò)誤清楚地報(bào)告出來(lái)。

Go中的多態(tài)性應(yīng)該在編譯和運(yùn)行時(shí)都可以實(shí)現(xiàn),這樣,有關(guān)實(shí)現(xiàn)策略的決策就可以留給編譯器來(lái)決定。這種靈活性將解決Go目前存在的一些難題。

草案設(shè)計(jì)

設(shè)計(jì)草案添加了一個(gè)新的語(yǔ)法,用于在類型或函數(shù)聲明中引入類型參數(shù)列表,例如:

1typeList(typeT)[]T23funcKeys(typeK,V)(mmap[K]V)[]K4

參數(shù)化聲明的使用,采用普通調(diào)用語(yǔ)法來(lái)提供類型參數(shù):

1varintsList(int)23keys:=Keys(int,string)(map[int]string{1:"one",2:"two"})

這些示例中的概括不需要T,K和V類型:任何類型都可以。 通常,實(shí)現(xiàn)可能需要約束可以使用的類型。例如,我們可能想要定義一個(gè)Set(T),以列表或映射的形式實(shí)現(xiàn),在這種情況下,類型T的值必須能夠進(jìn)行相等的比較。為了表達(dá)這一點(diǎn),設(shè)計(jì)草案引入了contract的概念。contract就像一個(gè)函數(shù)體,說(shuō)明了類型必須支持的操作。例如,要聲明類型T的值必須是可比較的:

1contractEqual(tT){2t==t3}

錯(cuò)誤處理

改進(jìn)目標(biāo)

Go 語(yǔ)言的錯(cuò)誤處理是基于明確的目的而設(shè)計(jì)的。用戶應(yīng)該從函數(shù)中返回所有可能的錯(cuò)誤,并且檢查/處理這些返回值。和其他語(yǔ)言相比,這一點(diǎn)可能看起來(lái)有些繁瑣和不人性化。

Go 2希望錯(cuò)誤檢查更加輕量級(jí),減少用于錯(cuò)誤檢查的Go程序文本的數(shù)量。

還希望使編寫(xiě)錯(cuò)誤處理變得更方便,從而提高程序員花時(shí)間處理錯(cuò)誤的可能性。

且錯(cuò)誤檢查和錯(cuò)誤處理必須保持顯式,即在程序文本中可見(jiàn)。

草案設(shè)計(jì)

草案設(shè)計(jì)引入了兩種新的句法形式。

首先,它引入一個(gè)檢查表達(dá)式來(lái)檢查f(x, y, z)或檢查err,并標(biāo)記一個(gè)顯式錯(cuò)誤檢查。

其次,它引入了一個(gè)定義錯(cuò)誤處理程序的handle語(yǔ)句。當(dāng)錯(cuò)誤檢查失敗時(shí),它將控制轉(zhuǎn)移到最內(nèi)層處理程序,該處理程序?qū)⒖刂妻D(zhuǎn)移到它上面的下一個(gè)處理程序,以此類推,直到處理程序執(zhí)行返回語(yǔ)句為止。例如:

1funcCopyFile(src,dststring)error{ 2handleerr{ 3returnfmt.Errorf("copy%s%s:%v",src,dst,err) 4} 5 6r:=checkos.Open(src) 7deferr.Close() 8 9w:=checkos.Create(dst)10handleerr{11w.Close()12os.Remove(dst)//(onlyifacheckfails)13}1415checkio.Copy(w,r)16checkw.Close()17returnnil18}

在不返回錯(cuò)誤的函數(shù)中允許check/handle組合。例如,一下是一個(gè)有用卻很簡(jiǎn)單的程序功能:

1funcmain(){ 2hex,err:=ioutil.ReadAll(os.Stdin) 3iferr!=nil{ 4log.Fatal(err) 5} 6 7data,err:=parseHexdump(string(hex)) 8iferr!=nil{ 9log.Fatal(err)10}1112os.Stdout.Write(data)13}

這么寫(xiě)會(huì)更簡(jiǎn)單、清晰:

1funcmain(){2handleerr{3log.Fatal(err)4}56hex:=checkioutil.ReadAll(os.Stdin)7data:=checkparseHexdump(string(hex))8os.Stdout.Write(data)9}

錯(cuò)誤值語(yǔ)義

改進(jìn)目標(biāo)

也許用戶對(duì)于Go的程序化的err有許多問(wèn)題:這是一個(gè)RPCError嗎?這是net.OpError嗎?它適應(yīng)net.Error的接口嗎?這是os.PathError嗎?

對(duì)于錯(cuò)誤值,第一個(gè)問(wèn)題,就是很難回答上述那些疑問(wèn)。函數(shù)os.IsExist,os.IsNotExist,os.IsPermission和os.IsTimeout是主要問(wèn)題。它們?cè)谕ㄓ眯苑矫嬗袃蓚€(gè)缺陷:每個(gè)函數(shù)僅測(cè)試一種特定類型的錯(cuò)誤,第二,每個(gè)函數(shù)只能理解非常有限數(shù)量的包類型。

第二個(gè)問(wèn)題看似沒(méi)什么,卻也很重要:深度嵌套錯(cuò)誤(nested error)的報(bào)告太難以閱讀,并且沒(méi)有留給額外的細(xì)節(jié)空間,比如程序中的相關(guān)文件位置。

針對(duì)上述存在的兩個(gè)問(wèn)題,Go 2首先希望能讓程序的錯(cuò)誤檢查更容易,更不容易出錯(cuò),以提高實(shí)際程序的錯(cuò)誤處理和魯棒性。其次,希望能夠以標(biāo)準(zhǔn)格式打印帶有附加細(xì)節(jié)的錯(cuò)誤。

草案設(shè)計(jì)

這里有兩個(gè)主要問(wèn)題:錯(cuò)誤檢查和錯(cuò)誤格式化,分別用兩個(gè)不同的方案解決。需要保持與現(xiàn)有代碼的互操作性,并允許包繼續(xù)定義自身的錯(cuò)誤類型的約束,指向定義錯(cuò)誤實(shí)現(xiàn)可以滿足的可選界面。

錯(cuò)誤檢查(Error inspection)

對(duì)于錯(cuò)誤檢查,設(shè)計(jì)草案遵循現(xiàn)有包(如github.com/pkg/errors)的規(guī)則,并為錯(cuò)誤定義了一個(gè)可選接口,以返回錯(cuò)誤包裝鏈中的下一個(gè)錯(cuò)誤:

1packageerrors23typeWrapperinterface{4Unwrap()error5}

例如,上面假設(shè)的WriteError需要:

1func(e*WriteError)Unwrap()error{returne.Err}

利用這種方法,方案設(shè)計(jì)中添加了兩個(gè)新函數(shù)對(duì)錯(cuò)誤打包:

1//Isreportswhethererroranyoftheerrorsinitschainisequaltotarget.2funcIs(err,targeterror)bool34//AscheckswhethererroranyoftheerrorsinitschainisavalueoftypeE.5//Ifso,itreturnsthediscoveredvalueoftypeE,withoksettotrue.6//Ifnot,itreturnsthezerovalueoftypeE,withoksettofalse.7funcAs(typeE)(errerror)(eE,okbool)8

錯(cuò)誤格式(Error formatting)

對(duì)于錯(cuò)誤格式,設(shè)計(jì)草案定義了根據(jù)錯(cuò)誤來(lái)實(shí)現(xiàn)的可選接口:

1packageerrors23typeFormatterinterface{4Format(pPrinter)(nexterror)5}

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1672

    瀏覽量

    51750
  • go語(yǔ)言
    +關(guān)注

    關(guān)注

    1

    文章

    159

    瀏覽量

    9802

原文標(biāo)題:Go 2.0發(fā)布在即,程序員有太多話要說(shuō)

文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    2025華為開(kāi)發(fā)者大賽暨開(kāi)發(fā)者年度會(huì)議成功舉辦

    12月27日-12月28日,以“成就AI原生時(shí)代先鋒開(kāi)發(fā)者”為主題的2025華為開(kāi)發(fā)者大賽暨開(kāi)發(fā)者年度會(huì)議在上海華為練秋湖研發(fā)中心舉辦。本次會(huì)議旨在匯聚先鋒開(kāi)發(fā)力量,搭建開(kāi)放共贏的生態(tài)
    的頭像 發(fā)表于 12-31 13:32 ?788次閱讀

    大理的AI野心藏不住了——風(fēng)花雪月中千名程序員探討人工智能

    2025 年12月4日至6日第二屆CCF程序員大會(huì)暨大理人工智能與應(yīng)用國(guó)際開(kāi)發(fā)者大會(huì)在大理圓滿落幕。
    的頭像 發(fā)表于 12-24 17:45 ?744次閱讀
    大理的AI野心藏不住了——風(fēng)花雪月中千名<b class='flag-5'>程序員</b>探討人工智能

    程序員最常見(jiàn)謊言

    了。 28我已經(jīng)測(cè)試過(guò)了,這個(gè)功能沒(méi)問(wèn)題,可以上線了。 29別擔(dān)心,這個(gè)問(wèn)題很快就能解決。 30代碼快寫(xiě)完了,已經(jīng)完成 90% 了 。 希望大家對(duì)程序員多一些容忍以及諒解! 各位程序員你們都被我說(shuō)中了哪些?說(shuō)說(shuō)你們的觀點(diǎn)
    發(fā)表于 12-10 08:24

    2025開(kāi)源鴻蒙開(kāi)發(fā)者激勵(lì)計(jì)劃正式啟動(dòng)

    11月21日,2025開(kāi)放原子開(kāi)發(fā)者大會(huì)盛大啟幕,聚焦“AI共智,開(kāi)源共享”主題,吸引了來(lái)自全球的開(kāi)發(fā)者、企業(yè)技術(shù)領(lǐng)袖、社區(qū)維護(hù)及高校科研力量參會(huì)。作為大會(huì)的重要組成部分,開(kāi)源鴻蒙技術(shù)分論壇同期
    的頭像 發(fā)表于 11-27 14:44 ?704次閱讀

    奔赴熱AI,碼力全開(kāi)!Talkweb House@1024程序員日系列活動(dòng)圓滿收官

    1024程序員日”系列活動(dòng)至此劃上了一個(gè)圓滿句號(hào)。本屆1024程序員節(jié)以“AI構(gòu)建世界,智能引領(lǐng)未來(lái)”為主題,廣邀技術(shù)大咖、產(chǎn)業(yè)領(lǐng)袖、企業(yè)代表與全球開(kāi)發(fā)者齊聚星城
    的頭像 發(fā)表于 10-27 18:59 ?802次閱讀
    奔赴熱AI,碼力全開(kāi)!Talkweb House@1024<b class='flag-5'>程序員</b>日系列活動(dòng)圓滿收官

    2025開(kāi)放原子開(kāi)發(fā)者大會(huì)11月啟幕

    開(kāi)發(fā)者年度盛會(huì)即將登場(chǎng)!2025開(kāi)放原子開(kāi)發(fā)者大會(huì)將于11月21-22日,在北京北人亦創(chuàng)國(guó)際會(huì)展中心盛大召開(kāi)。大會(huì)以“一切為了開(kāi)發(fā)者”為主題,匯聚全球開(kāi)源智慧——國(guó)內(nèi)外優(yōu)秀開(kāi)發(fā)者、學(xué)術(shù)
    的頭像 發(fā)表于 10-24 14:05 ?991次閱讀

    NVIDIA DRIVE AGX Thor開(kāi)發(fā)者套件重磅發(fā)布

    這款由 NVIDIA DriveOS 7 驅(qū)動(dòng)的開(kāi)發(fā)者套件能夠幫助開(kāi)發(fā)者們打造出更安全的智能汽車和交通解決方案。
    的頭像 發(fā)表于 09-04 11:20 ?1435次閱讀

    曙光網(wǎng)絡(luò)SugonRI開(kāi)發(fā)者社區(qū)正式上線

    在人工智能與工業(yè)深度融合的大潮中,工業(yè)軟件正在成為推動(dòng)產(chǎn)業(yè)升級(jí)的關(guān)鍵引擎。為了讓更多開(kāi)發(fā)者快速掌握工業(yè)級(jí)編程技術(shù)、共享行業(yè)實(shí)踐成果,曙光網(wǎng)絡(luò)正式推出開(kāi)發(fā)者社區(qū)——曙睿(SugonRI)開(kāi)發(fā)者網(wǎng)站
    的頭像 發(fā)表于 09-04 09:58 ?1020次閱讀

    NVIDIA Jetson AGX Thor開(kāi)發(fā)者套件重磅發(fā)布

    開(kāi)發(fā)者與未來(lái)創(chuàng)造們,準(zhǔn)備好迎接邊緣AI的史詩(shī)級(jí)革新了嗎?NVIDIA以顛覆性技術(shù)再次突破極限,正式推出Jetson AGX Thor開(kāi)發(fā)者套件!作為繼傳奇產(chǎn)品Jetson AGX O
    的頭像 發(fā)表于 08-28 14:31 ?1598次閱讀

    【HZ-T536開(kāi)發(fā)板免費(fèi)體驗(yàn)】2 - 交叉編譯倉(cāng)頡編程語(yǔ)言程序開(kāi)發(fā)板運(yùn)行

    對(duì)現(xiàn)代語(yǔ)言特性的集成、全方位的編譯優(yōu)化與運(yùn)行時(shí)實(shí)現(xiàn),以及 IDE 工具鏈支持,為開(kāi)發(fā)者締造友好的開(kāi)發(fā)體驗(yàn)和卓越的程序性能,便于開(kāi)發(fā)者高效地完
    發(fā)表于 07-16 21:27

    匠芯創(chuàng)發(fā)布新版GUI開(kāi)發(fā)工具 新增多國(guó)語(yǔ)言設(shè)置等功能

    、播放暫停、循環(huán)播放以及控制面板呼出等功能,為開(kāi)發(fā)者在多媒體應(yīng)用開(kāi)發(fā)方面提供了有力支持。 AiUIBuilder自2024年推出以來(lái),憑借其強(qiáng)大的功能和易用性,受到了眾多開(kāi)發(fā)者的青睞。V1.3.0
    發(fā)表于 07-16 13:54

    HDC 2025開(kāi)發(fā)者主題演講精彩回顧

    日前,華為開(kāi)發(fā)者大會(huì)(HDC 2025)進(jìn)入第二天,行業(yè)領(lǐng)袖、技術(shù)專家、全球開(kāi)發(fā)者齊聚現(xiàn)場(chǎng),共同見(jiàn)證這場(chǎng)科技盛會(huì)。在開(kāi)發(fā)者主題演講中,華為技術(shù)專家深入解析HarmonyOS的最新技術(shù)、體驗(yàn)創(chuàng)新以及
    的頭像 發(fā)表于 07-09 11:20 ?1358次閱讀

    全志科技亮相OpenHarmony開(kāi)發(fā)者大會(huì)2025

    近日,OpenHarmony開(kāi)發(fā)者大會(huì) 2025(OHDC.2025,以下簡(jiǎn)稱“大會(huì)”)在深圳舉辦。大會(huì)正式發(fā)布了開(kāi)源鴻蒙5.1 Release版本,舉行了“開(kāi)源鴻蒙應(yīng)用技術(shù)組件共建啟動(dòng)、開(kāi)源鴻蒙
    的頭像 發(fā)表于 06-04 09:16 ?2267次閱讀
    全志科技亮相OpenHarmony<b class='flag-5'>開(kāi)發(fā)者</b>大會(huì)2025

    Java開(kāi)發(fā)者必備的效率工具——Perforce JRebel是什么?為什么很多Java開(kāi)發(fā)者在用?

    Perforce JRebel是一款Java開(kāi)發(fā)效率工具,旨在幫助java開(kāi)發(fā)人員更快地編寫(xiě)更好的應(yīng)用程序。JRebel可即時(shí)重新加載對(duì)代碼的修改,無(wú)需重啟或重新部署應(yīng)用程序,就能讓
    的頭像 發(fā)表于 04-27 13:44 ?887次閱讀
    Java<b class='flag-5'>開(kāi)發(fā)者</b>必備的效率工具——Perforce JRebel是什么?為什么很多Java<b class='flag-5'>開(kāi)發(fā)者</b>在用?

    為何嵌入式開(kāi)發(fā)者覺(jué)得 MCU 開(kāi)發(fā)無(wú)趣,更傾向 MPU(Linux)?

    咱嵌入式圈子里,最近老能聽(tīng)見(jiàn)有人念叨:“搞 MCU 開(kāi)發(fā)越來(lái)越?jīng)]勁兒了,不如轉(zhuǎn) MPU(Linux)有意思?!?作為在這行摸爬滾打二十多年的老兵,我也算看明白了 —— 這事兒就像程序員從寫(xiě)單片機(jī)裸機(jī)
    的頭像 發(fā)表于 04-25 10:48 ?832次閱讀
    為何嵌入式<b class='flag-5'>開(kāi)發(fā)者</b>覺(jué)得 MCU <b class='flag-5'>開(kāi)發(fā)</b>無(wú)趣,更傾向 MPU(Linux)?