Go的型別 物件導向程式設計

2021-10-05 09:30:50 字數 989 閱讀 8020

type student struct 

func main() //例項化

}

func newstudent (id uint,name string, male bool, score float64) *student //返回乙個指向結構體例項的指標

}func main()

//為student型別增加方法

func (s student) getdsc() string

//直接傳入結構體指標,減少拷貝,可以降低記憶體消耗

func (s *student) addscore(score float64)

func main()

type animal struct 

func (a animal) call() string

type dog struct

func main()

dog := dog

dog.call()// "動物的叫聲。。。"

}

上面的例子,如果為dog型別增加乙個call方法,dog.call()就是執行dog型別的call方法。

只要結構體實現了介面的所有方法,就說這個結構體實現了介面

type animal inte***ce

---------------------------------

type dog struct

func (d dog)call()string

func (d *dog)addnum(num int)

//上面定義的animal介面,dog類,可以看出dog類實現了所有animal介面的方法

import (

"animal"

"fmt"

)func main()

Go 物件導向程式設計

值語義與引用語義的區別在於賦值。值型別不會改變變數值,引用型別會改變變數值。go 語言中大多數型別都是基於值語義,包括 基本型別 如byte int bool float32 float64和string 復合型別 如陣列 array 結構體 struct 和指標 pointer 等。go語言中的陣...

Go的物件導向程式設計

func p point distance q point float64 p point q point fmt.println distance p,q 5 function call fmt.println p.distance q 5 method call 裡那個附加的引數p,叫做方法的接...

go物件導向程式設計 封裝

將結構體 屬性的字段設定為小寫 給結構體所在的包提供乙個工廠模式,首字母大寫,類似於乙個建構函式 提供乙個首字母大寫的set方法,用於對屬性的判斷並賦值func c student setscore score float64 提供乙個首字母大寫的get方法,用於獲取屬性值func 封裝的實現 ty...