1. 程式人生 > >go語言面向物件案例

go語言面向物件案例

在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, "+")
}