go語言既不是面向對象,也不是面向過程,因為Go並沒有明顯的傾向,而是更傾向於讓程式設計者去考慮該怎麼去用它,也許它的特色就是靈活,程式設計者可以用它實現物件導向,但它本身不支援物件導向的語意。說Go是物件導向的,是因為Go可以將函數綁定在結構體上(結構體可以看做物件導向中的物件)。說Go不完全是物件導向,是因為物件導向有三大特徵:封裝、繼承、多型;而go的結構體不支援繼承。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
go語言既不是面向對象,也不是面向過程,但是如果想要實作它們其實是可以辦到的。
物件導向:以物件為中心去思考物件具有的行為;
面向過程:在程式設計上,以函數為中心去思考函數的用途。
說Go是物件導向的,是因為Go可以將函數綁定在結構體上(結構體可以看做物件導向中的物件);說Go不完全是面向物件是因為物件導向有三大特徵:封裝、繼承、多型。而go的結構體不支持繼承(但支持結構體的嵌套/組合)。
說Go是面向過程的,是因為Go不是一定要將函數綁定在結構體物件上,可以按照過程導向的方式設計和程式設計。
所以嚴格來將,Go不是OOP的語言,但是又允許有OOP的程式風格,他的彈性更傾向於讓開發者去考慮該怎麼去用它。
Golang可以說兩者都不算,因為Golang並沒有明顯的傾向,而是更傾向於讓程式設計師去考慮該怎麼去用它,也許它的特色就是靈活,程式設計者可以用它實現面向對象,但它本身不支援物件導向的語義。
擴充知識:
物件導向
物件導向(Object Oriented,OO)是目前電腦界關心的重點,它是90年代軟體開發方法的主流。物件導向的概念和應用已超越了程式設計和軟體開發,擴展到很寬的範圍。如資料庫系統、互動式介面、應用結構、應用平台、分散式系統、網路管理架構、CAD技術、人工智慧等領域。
談到物件導向,這方面的文章非常多。但是,明確地給出對象的定義或說明對象的定義的非常少——至少我還沒有發現。起初,「物件導向」是專指在程式設計中採用封裝、繼承、多型和抽像等設計方法。可是,這個定義顯然不能再適合情況。物件導向的想法已經涉及到軟體開發的各個方面。如,物件導向的分析(OOA,Object Oriented Analysis),物件導向的設計(OOD,Object Oriented Design)、以及我們經常說的物件導向的程式實作(OOP,Object Oriented Programming)。許多有關物件導向的文章都只是講述在物件導向的開發中所需要注意的問題或所採用的比較好的設計方法。看這些文章只有真正懂得什麼是對象,什麼是面向對象,才能最大程度地對自己有所裨益。這一點,恐怕對初學者甚至是從事相關工作多年的人員也會對它們的概念模糊不清。
面向過程
「以過程為導向」(Procedure Oriented)是一種以過程為中心的程式設計思想。這些都是以什麼正在發生為主要目標進行編程,不同於物件導向的是誰在受影響。與物件導向明顯的不同就是封裝、繼承、類別。
以上是go語言面向什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!