讓我們一起Go(十二)

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

前言:

上篇中,我們講到了在Go語言中如何定義方法,今天,我們將進一步深入Go語言的物件導向編程。

 

一、Go語言中的介面

首先來看一個最基本的介面:

 

和定義一個結構體類似,只不過將struct換成了interface,然後聲明了兩個函數:draw()和count()。就這麼簡單,一個介面就定義好了,那麼如何?介面呢?在java中我們會讓一個類去實現介面,在實現的時候必須用implements關鍵字顯示聲明去實現,如:

class myshow implements show{...}

在Go語言中,不需要這麼做,我們要做的只是去實現介面聲明的所有函數就可以了,如下所示,就實現show這個介面:

上面代碼,我們的osArgs結構體實現了文章開頭給出的show這個介面。其實就是用到上一篇的內容,給osArgs結構體定義了兩個方法,而這兩個方法就是介面定義的兩個函數,只是我們具體完成了這兩個函數具體要做的功能。這不就是介面的功能麼,你可以定義很多個結構體,分別實現show介面,使得它實現不同的功能。但是Go語言的介面實現不需要顯示去聲明實現了某個介面如上面的show,因為很有可能在另外一個地方,有一個show2的介面,它也是定義了draw()和count()函數。所以,你其實也是實現了show2這個介面,這似乎非常靈活,自由。這裡不會講它如何如何好,或者如何如何不好,哈哈哈,因為......反正對於初學者來說,目前只需要懂得如何用就好了,等深入後再去探討“好壞”的問題會更好。最後,看如何具體使用上面的介面:

要想這個例子正常編譯運行,記得匯入os包哦。

二、Go語言中的介面的繼承

如Go語言沒有繼承,而使用組合的方式來實作類別似功能,其實介面也是,不像java或其它語言一個繼承介面,而是組合一個介面,我們簡單的改寫前面的代碼:

我們將之前的介面show改成首字母大寫,還記得吧,這樣就可以被外部包調用,而且把之前show介面的draw函數分離出一個Drawer介面,在Draw後加上er是因為在Go語言中習慣上,單一成員的介面的名稱是其成員名加-er。然後在Show介面中組合Drawer介面,如上代碼所示。

三、本篇小結

本篇介面就寫到這裡,在下一篇中將看到更多關於Go介面的相關內容。

作者:Sirk  
出處:http://www.cnblogs.com/vimsk
本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則保留追究法律責任的權利。

 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.