作為一門物件導向的語言,必然少不了介面,go的介面叫做非侵入式,雖然不存在繼承的語法,但是有繼承的概念。
如下,乙個connector介面,包含乙個connect()方法,乙個usb介面,包含了connector介面和乙個name()方法,然後兩個類phoneconnector和tvconnector分別實現了usb介面,乙個全域性disconnect()方法,介面乙個connector引數。
package main
import (
"fmt"
)type connector inte***ce
type phoneconnector struct
type tvconnector struct
type usb inte***ce
func (pc phoneconnector) connect()
func (pc phoneconnector) name() string
func (tv tvconnector) connect()
func (tv tvconnector) name() string
func disconnect(usb connector)
}func main()
tv := tvconnector
pc.connect()
tv.connect()
disconnect(pc)
disconnect(tv)
}
對於以上程式,有個疑問,假如把phoneconnector和tvconnector的兩個實現函式的接收器修改為指標型別,disconnect函式該如何寫呢?試了好久無果。。。
go 物件導向
在前面博文我們有記錄函式與struct型別的使用,那你是否有想過把函式當做struct字段一樣來處理呢?接下來,將記錄一下函式的另一種形態,帶有接收者的函式,我們稱之為method,即方法 在物件導向程式設計中,乙個物件其實也就是乙個簡單的值或者乙個變數,在這個物件中會包含一些函式,這種帶有接收者的...
go物件導向
把一類事物的共有的屬性 字段 和行為 方法 提取出來,形成乙個物理模型 結構體 這種研究問題的方法稱為抽象 封裝 encapsulation 就是把抽象出的字段和對字段的操作封裝在一起,資料被保護在內部,程式的其它包只有通過被授權的操作 方法 才能對欄位進行操作 封裝的好處 1 隱藏實現細節 2 可...
Go基礎之物件導向(GOPATH篇)
export path gopath bin path usr local go bin export goroot usr local go export gopath home go goroot 環境變數 存放go語言系統庫檔案的目錄,如 fmt io 等,就是go的sdk gopath 環境...