1. 程式人生 > >go 結構體和類 函式和方法 介面

go 結構體和類 函式和方法 介面

  • 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 {}