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

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值