91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

泛型(generics)

錯誤處理(error handling)

錯誤值語義(error value semantics)

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

泛型

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

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

Go 2.0的目標(biāo)是通過允許帶有類型參數(shù)的參數(shù)多態(tài)(parametric polymorphism)來解決編寫Go庫的問題。

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

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

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

草案設(shè)計

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

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

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

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

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

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

錯誤處理

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

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

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

還希望使編寫錯誤處理變得更方便,從而提高程序員花時間處理錯誤的可能性。

且錯誤檢查和錯誤處理必須保持顯式,即在程序文本中可見。

草案設(shè)計

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

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

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

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}

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

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}

這么寫會更簡單、清晰:

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

錯誤值語義

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

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

對于錯誤值,第一個問題,就是很難回答上述那些疑問。函數(shù)os.IsExist,os.IsNotExist,os.IsPermission和os.IsTimeout是主要問題。它們在通用性方面有兩個缺陷:每個函數(shù)僅測試一種特定類型的錯誤,第二,每個函數(shù)只能理解非常有限數(shù)量的包類型。

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

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

草案設(shè)計

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

錯誤檢查(Error inspection)

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

1packageerrors23typeWrapperinterface{4Unwrap()error5}

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

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

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

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

錯誤格式(Error formatting)

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

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

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

    關(guān)注

    1

    文章

    1662

    瀏覽量

    50200
  • go語言
    +關(guān)注

    關(guān)注

    1

    文章

    159

    瀏覽量

    9369

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

    阿里云升級通義靈碼AI程序員,全面上線

    近日,阿里云宣布其備受矚目的通義靈碼AI程序員已正式全面上線,為開發(fā)者帶來更為強大和便捷的編程輔助工具。 此次上線的通義靈碼AI程序員,在功能上實現(xiàn)了全面升級。現(xiàn)在,它支持VS Code
    的頭像 發(fā)表于 01-09 11:16 ?710次閱讀

    OurBMC 24.12版本正式上線

    日前,經(jīng)過社區(qū)開發(fā)者的共同努力,OurBMC 全新升級,24.12版本正式上線。
    的頭像 發(fā)表于 01-07 13:45 ?610次閱讀

    開發(fā)者的開源鴻蒙故事

    近日,在以“一切為了開發(fā)者”為主題的“2024開放原子開發(fā)者大會暨首屆開源技術(shù)學(xué)術(shù)大會”上,開源鴻蒙5.0 Release版本正式發(fā)布,備受各方關(guān)注。該版本在系統(tǒng)完備度、分布式創(chuàng)新、
    的頭像 發(fā)表于 01-06 10:28 ?850次閱讀

    機(jī)械革命發(fā)布CODE AI程序員

    近日,英特爾新質(zhì)生產(chǎn)力技術(shù)生態(tài)大會在成都舉行,機(jī)械革命作為重要參展商帶來了多款明星產(chǎn)品引爆全場!其中更是在AI PC軟件生態(tài)產(chǎn)品發(fā)布分論壇上,Intel、智譜、機(jī)械革命三方聯(lián)合發(fā)布了專為程序員設(shè)計的CODE AI程序員,成為本
    的頭像 發(fā)表于 11-30 10:34 ?1100次閱讀

    HarmonyOS NEXT應(yīng)用元服務(wù)開發(fā)Intents Kit(意圖框架服務(wù))習(xí)慣推薦方案開發(fā)者測試

    :基礎(chǔ)信息提供,環(huán)境準(zhǔn)備,聯(lián)調(diào)驗證。 一、基礎(chǔ)信息提供 達(dá)成開發(fā)意向后,開發(fā)者發(fā)送郵件到郵箱(hagservice@huawei.com)或者聯(lián)系華為意圖框架接口同事,向華為提供測試應(yīng)用的信息。 二、環(huán)境
    發(fā)表于 11-25 17:37

    HarmonyOS NEXT應(yīng)用元服務(wù)開發(fā)Intents Kit(意圖框架服務(wù))事件推薦開發(fā)者測試

    :基礎(chǔ)信息提供,環(huán)境準(zhǔn)備,聯(lián)調(diào)驗證。 一、基礎(chǔ)信息提供 達(dá)成開發(fā)意向后,開發(fā)者發(fā)送郵件到郵箱(hagservice@huawei.com)或者聯(lián)系華為意圖框架接口同事,向華為提供測試應(yīng)用的信息。 二、環(huán)境
    發(fā)表于 11-18 17:39

    潤開鴻受邀參加華為云開發(fā)者日南京站

    近日,華為云開發(fā)者日“1024程序員節(jié)專場主題活動”南京站成功舉辦。江蘇潤和軟件股份有限公司旗下子公司江蘇潤開鴻數(shù)字科技有限公司(以下簡稱“潤開鴻”)作為專注鴻蒙方向的專業(yè)技術(shù)公司及終端操作系統(tǒng)
    的頭像 發(fā)表于 11-13 16:32 ?782次閱讀

    AI編程工具會不會搶程序員飯碗

    AI編程工具可輔助編程,減少手動編碼,提升效率,對程序員積極影響也有挑戰(zhàn)。程序員需深化技能、拓寬知識應(yīng)對。長遠(yuǎn)看,AI與人類程序員將共生共榮。
    的頭像 發(fā)表于 11-08 10:17 ?527次閱讀

    第五屆長沙·中國1024程序員節(jié)開幕

    場精彩活動將輪番上演。超200名海內(nèi)外技術(shù)人員圍繞人工智能、數(shù)據(jù)技術(shù)等前沿領(lǐng)域展開深入研討。 本屆1024程序員節(jié)中機(jī)器人與具身智能、大模型等主題引發(fā)熱烈討論;程序員開發(fā)者如何利用生成式AI提升
    的頭像 發(fā)表于 10-25 15:42 ?492次閱讀

    蘋果發(fā)布Apple Intelligence開發(fā)者測試版

    近日,蘋果公司正式發(fā)布了其全新的Apple Intelligence開發(fā)者測試版本,這一版本集成了備受期待的ChatGPT功能,為開發(fā)者和部分用戶帶來了全新的體驗。然而,在美股盤中,蘋
    的頭像 發(fā)表于 10-24 09:57 ?702次閱讀

    華為原生鴻蒙之夜官宣1024程序員節(jié)彩蛋:與鴻蒙開發(fā)者共碼未來

    歷史性突破!會上,華為終端BG CEO何剛向所有鴻蒙開發(fā)者致以誠摯的敬意,同時官宣在10月24日程序員節(jié),華為將舉辦以“共碼未來,待到山花爛漫時”為主題的致敬鴻蒙開發(fā)者專屬活動,希望更多開發(fā)者
    的頭像 發(fā)表于 10-23 15:01 ?460次閱讀
    華為原生鴻蒙之夜官宣1024<b class='flag-5'>程序員</b>節(jié)彩蛋:與鴻蒙<b class='flag-5'>開發(fā)者</b>共碼未來

    KaihongOS 4.1.2開發(fā)者預(yù)覽版正式上線,誠邀開發(fā)者免費試用!

    深開鴻在2024開放原子開源生態(tài)大會上正式宣布KaihongOS4.1.2開發(fā)者預(yù)覽版全面上線,并向全球開發(fā)者開放免費下載。作為KaihongOS不斷創(chuàng)新與發(fā)展的重要里程碑,此次預(yù)覽版為開發(fā)者提供了
    的頭像 發(fā)表于 09-28 08:07 ?729次閱讀
    KaihongOS 4.1.2<b class='flag-5'>開發(fā)者</b>預(yù)覽版正式上線,誠邀<b class='flag-5'>開發(fā)者</b>免費試用!

    KaihongOS 4.1.2開發(fā)者預(yù)覽版正式上線,誠邀開發(fā)者免費試用!

    今日,深開鴻在2024開放原子開源生態(tài)大會上正式宣布KaihongOS 4.1.2開發(fā)者預(yù)覽版全面上線,并向全球開發(fā)者開放免費下載。作為KaihongOS不斷創(chuàng)新與發(fā)展的重要里程碑,此次預(yù)覽版為
    的頭像 發(fā)表于 09-26 15:59 ?743次閱讀
    主站蜘蛛池模板: 精品看片 | 日韩一级高清 | 欧美一级片免费在线观看 | 久久综合九色综合97_ 久久久 | 日韩在线三级视频 | 天堂8中文在线最新版在线 天堂8资源8在线 | 日韩一区二区三区在线 | 国产精品虐乳在线播放 | 国产精品久久久久影院色老大 | 精品久草 | 色秀视频免费高清网站 | 亚洲成年人网 | 国产三级日产三级韩国三级 | 天天操天天添 | 男男互攻h啪肉np文厉世 | 国产色婷婷精品综合在线手机播放 | 精品国产污污免费网站入口 | 天天做.天天爱.天天综合网 | 好大好硬好深好爽的视频 | 最近2018中文字幕2019视频 | 天天干成人网 | 天天干天天爽天天操 | 亚洲黄色三级网站 | 欧美日韩亚洲色图 | 久操视频在线 | 日本色免费 | 国产精品你懂的在线播放 | 国产偷啪视频一区 | 成人夜夜嗨| 亚偷熟乱区视频在线观看 | 人人干在线观看 | 8000av在线| 成人午夜性视频欧美成人 | 色婷五月 | 免费看一级特黄a大片 | 久久夜色撩人精品国产 | 中韩日欧美电影免费看 | 亚洲特黄大黄一级毛片 | 99综合在线 | 手机在线观看免费视频 | 国产玖玖在线 |