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...