Golang中物件導向的實現

2021-10-11 18:05:27 字數 901 閱讀 9036

golang中沒有類(class)的概念,但是有結構(struct)的概念。在其他語言(比如c++)中,屬性是與方法繫結在一起的,而在go中屬性與方法是松耦合的。

乙個簡單的結構:

type student struct
方法寫在結構的外面,比如我們要為student物件新增getter和setter,我們應該在student結構外新增如下**:

func (self *student) setname(name string) 

func (self *student) setid(id string)

func (self *student) setscore(score int)

func (self *student) name() string

func (self *student) id() string

func (self *student) score() int

繼承是通過在結構裡嵌入其他結構來實現對其他結構的繼承的。比如以下**就是car繼承了object,擁有了object中定義的字段:

package main

import (

"fmt"

)type printer inte***ce

type object struct

type car struct

func (self *car) print()

func main() , "bmw"}

car.print()

}

字段是否對外暴露(公有還是私有)是通過欄位名的大小寫決定的。

多型是通過介面實現的,如果不能確定具體型別,可以先用inte***ce{}型別代替。

golang 物件導向

method的語法如下 func r receivertype funcname parameters results 下面我們用最開始的例子用method來實現 package main import fmt math type rectangle struct type circle struc...

golang 物件導向

package main golang 物件導向 import fmt type相當於 c c 的 typedef拉 type myint int64 type person struct 繼承 匿名欄位person,相當於c c 的繼承拉,student就擁有了person所有的屬性拉,其實c c...

golang 物件導向

method的語法如下 func r receivertype funcname parameters results 下面我們用最開始的例子用method來實現 package main import fmt math type rectangle struct type circle struc...