真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Go語言與鴨子類型的關(guān)系是什么

這篇文章將為大家詳細講解有關(guān)Go語言與鴨子類型的關(guān)系是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

成都創(chuàng)新互聯(lián)服務(wù)項目包括紅塔網(wǎng)站建設(shè)、紅塔網(wǎng)站制作、紅塔網(wǎng)頁制作以及紅塔網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,紅塔網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到紅塔省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

Go語言與鴨子類型的關(guān)系

先直接來看維基百科里的定義:

If it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck.

翻譯過來就是:如果某個東西長得像鴨子,像鴨子一樣游泳,像鴨子一樣嘎嘎叫,那它就可以被看成是一只鴨子。

DuckTyping,鴨子類型,是動態(tài)編程語言的一種對象推斷策略,它更關(guān)注對象能如何被使用,而不是對象的類型本身。Go語言作為一門靜態(tài)語言,它通過通過接口的方式完美支持鴨子類型。

當(dāng)調(diào)用此函數(shù)的時候,可以傳入任意類型,只要它實現(xiàn)了say_hello()函數(shù)就可以。如果沒有實現(xiàn),運行過程中會出現(xiàn)錯誤。

而在靜態(tài)語言如Java,C++中,必須要顯示地聲明實現(xiàn)了某個接口,之后,才能用在任何需要這個接口的地方。如果你在程序中調(diào)用hello_world函數(shù),卻傳入了一個根本就沒有實現(xiàn)say_hello()的類型,那在編譯階段就不會通過。這也是靜態(tài)語言比動態(tài)語言更安全的原因。

動態(tài)語言和靜態(tài)語言的差別在此就有所體現(xiàn)。靜態(tài)語言在編譯期間就能發(fā)現(xiàn)類型不匹配的錯誤,不像動態(tài)語言,必須要運行到那一行代碼才會報錯。插一句,這也是我不喜歡用python的一個原因。當(dāng)然,靜態(tài)語言要求程序員在編碼階段就要按照規(guī)定來編寫程序,為每個變量規(guī)定數(shù)據(jù)類型,這在某種程度上,加大了工作量,也加長了代碼量。動態(tài)語言則沒有這些要求,可以讓人更專注在業(yè)務(wù)上,代碼也更短,寫起來更快,這一點,寫python的同學(xué)比較清楚。

Go語言作為一門現(xiàn)代靜態(tài)語言,是有后發(fā)優(yōu)勢的。它引入了動態(tài)語言的便利,同時又會進行靜態(tài)語言的類型檢查,寫起來是非常Happy的。Go采用了折中的做法:不要求類型顯示地聲明實現(xiàn)了某個接口,只要實現(xiàn)了相關(guān)的方法即可,編譯器就能檢測到。

程序輸出:

在main函數(shù)中,調(diào)用調(diào)用sayHello()函數(shù)時,傳入了golang,php對象,它們并沒有顯式地聲明實現(xiàn)了IGreeting類型,只是實現(xiàn)了接口所規(guī)定的sayHello()函數(shù)。實際上,編譯器在調(diào)用sayHello()函數(shù)時,會隱式地將golang,php對象轉(zhuǎn)換成IGreeting類型,這也是靜態(tài)語言的類型檢查功能。

順帶再提一下動態(tài)語言的特點:

變量綁定的類型是不確定的,在運行期間才能確定函數(shù)和方法可以接收任何類型的參數(shù),且調(diào)用時不檢查參數(shù)類型不需要實現(xiàn)接口

總結(jié)一下,鴨子類型是一種動態(tài)語言的風(fēng)格,在這種風(fēng)格中,一個對象有效的語義,不是由繼承自特定的類或?qū)崿F(xiàn)特定的接口,而是由它"當(dāng)前方法和屬性的集合"決定。Go作為一種靜態(tài)語言,通過接口實現(xiàn)了鴨子類型,實際上是Go的編譯器在其中作了隱匿的轉(zhuǎn)換工作。

關(guān)于Go語言與鴨子類型的關(guān)系是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


本文標(biāo)題:Go語言與鴨子類型的關(guān)系是什么
瀏覽路徑:http://weahome.cn/article/gdjpss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部