Golang 入門系列(五)GO語言中的物件導向

來源:互聯網
上載者:User

前面講了很多Go 語言的基礎知識,包括go環境的安裝,go語言的文法等,感興趣的朋友可以先看看之前的文章。https://www.cnblogs.com/zhangweizhong/category/1275863.html。

今天GO語言中的物件導向。

 

GO語言中的物件導向

 

其實GO並不是一個純物件導向程式設計語言。它沒有提供類(class)這個關鍵字,只提供了結構體(struct)類型。

java或者C# 裡面,結構體(struct)是不能有成員函數的。然而,Go語言中的結構體(struct)可以有"成員函數"。方法可以被添加到結構體中,類似於一個類的實現。

我個人覺得Go 語言在的物件導向,其實更簡單,也更容易理解。

 

學過java或C# 的人應該都知道,物件導向的三個基本特徵:封裝、繼承和多態。他們的定義我這裡就不細說了。下面,就直接看看 go 語言下的物件導向是怎樣實現的吧。

 

1. 封裝特性

  Golang區分公有屬性和私人屬性的機制就是方法或屬性是否首字母大寫,如果首字母大寫的方法就是公有的,如果首字母小寫話就是私人的。

package mainimport "fmt"type Person struct {    name string}func (person *Person) setName(name string) {    person.name = name}func (person *Person) GetInfo() {    fmt.Println(person.name)}func main() {    p := Person{"zhangsan"}    p.setName("lisi")    p.GetInfo()}

 

2. 繼承特性

  GO語言的繼承方式採用的是匿名組合的方式:Woman 結構體中包含匿名欄位Person,那麼Person中的屬性也就屬於Woman對象。

package mainimport "fmt"type Person struct {    name string}type Woman struct {    Person    sex string}func main() {    woman := Woman{Person{"wangwu"}, "女"}    fmt.Println(woman.name)    fmt.Println(woman.sex)}

   

3. 多態特性

package mainimport "fmt"type Eater interface {    Eat()}type Man struct {}type Woman struct {}func (man *Man) Eat() {    fmt.Println("Man Eat")}func (woman *Woman) Eat() {    fmt.Println("Woman Eat")}func main() {    var e Eater    woman := Woman{}    man := Man{}    e = &woman    e.Eat()    e = &man    e.Eat()}

 

最後

以上,就把Go語言如何?物件導向的簡單介紹了一下,其實跟java和C# 等也都差不多,大家可以比較著來看。總結的來說就是:Go沒有類,而是松耦合的類型、方法對介面的實現。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.