不好!我中了美人計!

2020-09-19 12:04:09

後記:這篇是上一篇《JavaScript的最大祕密》的續集,繼JavaScript的原型法之後,又介紹了一下Go語言物件導向的實現。Go語言在物件導向這一塊兒比較有趣,結構體和方法分開,沒有繼承,只有組合,有一種看起來很像DuckTyping的多型,我想Ken Thompson和Rob Pike等人在設計Go語言的時候,肯定經過了深思熟慮,精心考量。 

在Go語言的官網上,對Go語言是不是物件導向的語言做了答覆:是也不是。雖然Go語言有型別和方法,並且允許物件導向風格的程式設計,但是並沒有型別的繼承,Go語言中「介面」的概念提供了一種不同的方式,我們認為在它更容易使用,更加通用。

Go語言通過在一個型別中嵌入另外一個型別來支援子類化(雖然並不完全等同)的概念。除此之外,Go語言中的方法比C++和Java更加通用,程式設計師可以在任何資料型別上定義方法,甚至是內建的型別:如Integer, 方法並不侷限在structs(classes)上。 同樣,沒有型別繼承使得Go語言中的物件用起來比C++或者Java更加輕量級。