go語言面向物件案例
阿新 • • 發佈:2019-01-25
在go語言中,使用結構體和方法實現了封裝,通過匿名欄位完成繼承,使用介面統一了方法的入口以及出口(使用函式來統一排程)實現了多型。
1.在go語言中,指標一般使用在函式接收者的位置。 2.在結構體中,使用變數與指標均允許對結構體成員進行訪問。在函式接者繫結的為指標時,可以對結構體內容進行修改;若幫定位結構體變數,則不可對其進行修改。 3.介面不可以使用指標變數呼叫方法。
以下程式碼為簡單的面向物件的計算器案例,還使用了工廠模式統一建立物件,使用者只需要建立工廠物件,呼叫工廠方法即可完成計算功能。
package main import "fmt" type Object interface { Result()(int) } type object struct{ a int b int } type Add struct{ object } type Sub struct{ object } type Factory struct{ } func (a *Add)Result()(int){ return a.a + a.b } func (s *Sub)Result()(int){ return s.a - s.b } func (f *Factory)Factory(a int, b int, ch string){ var v int switch ch { case "+": num1 := Add{object{a, b}} v = Result(&num1) case "-": num2 := Sub{object{a, b}} v = Result(&num2) } fmt.Println(v) } func Result(o Object) int{ return o.Result() } func main(){ var f Factory f.Factory(10, 20, "+") }