go 結構體和類 函式和方法 介面
阿新 • • 發佈:2019-01-26
- go中沒有類的概念,只有結構體。
定義結構體使用type struct 關鍵字
type typeName struct {
var1 Type
var2 Type
...
varn Type
}
- 其它面向物件的語言中類包含屬性和方法,go中定義類的方法和定義函式很像
定義函式:
func funcName (param Type ...) returnType {
}
定義方法:
func (t Type) methodName (param Type...) returnType {
}
兩者的區別僅僅是方法中在func關鍵字和方法名之間多了一個接收者型別。
- 介面
一般面向物件的介面是定義一個物件的行為,指定物件應該做什麼,而如何實現這個行為細節則由物件本身確定。
像java中需要類方法中顯示的宣告實現了該介面,go中只要型別方法定義了介面中所有方法,該型別就實現了該介面。
interface是方法的集合,是一種型別。多個型別可以實現同一個 介面,一個型別可以實現多個介面。
定義介面:
type interfaceName interface { methodName1() [returnType] methodName2() [returnType] ... methodNamen() [returnType] }
實現介面:
func (typeName Type) methodName1() [returnType] {
}
空介面可以接收任何型別,可以實現萬能切片 :[]interface{}
任意map : [Type] interface {}