Go語言與鴨子類型的關(guān)系是什么-創(chuàng)新互聯(lián)

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

在萊州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都做網(wǎng)站 網(wǎng)站設(shè)計制作按需策劃設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,萊州網(wǎng)站建設(shè)費用合理。

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)語言的便利,同時又會進(jìn)行靜態(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é)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

本文名稱:Go語言與鴨子類型的關(guān)系是什么-創(chuàng)新互聯(lián)
標(biāo)題URL:http://muchs.cn/article36/dhdgpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、標(biāo)簽優(yōu)化、定制開發(fā)、網(wǎng)站設(shè)計網(wǎng)站導(dǎo)航、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化