Go语言学习笔记01-面向对象编程

        Go语言既不倾向于面向对象也不倾向于面向过程,go语言较为灵活。

        相对于Java,Go语言具有更轻量的特性,Go语言的运行不需要虚拟机,它是完全编译型语言;Go语言具有天生的并发编程特性,在多核环境下,运行速率远超于Java。相对于C/C++,它具有良好的垃圾回收和依赖管理,编程效率大大提高。相对于Python等解释型语言,Go语言的运行效率更是不可同日而语。

面向对象编程

        type关键字,type用来声明类型 type type_name origin_type

        例如 type Person struct 或者 type Factory interface

        Go语言不支持传统的类,其面向对象的特征是通过Go语言特殊的万用性实现的,其中,多态利用接口实现,封装利用指针+结构体实现,继承使用嵌入来实现。注意Go语言不支持函数重载。在面向对象中,func关键字可以分别定义函数和方法。函数的定义方式为func functionName(paramName paramType[...]) returnType[...],方法的定义方式喂 func (instanceName instanceType) functionName(paramName paramType[...]) returnType[...]。

接口中的函数也可以通过上述方式来实现。实现的接口可以通过=号指定具体实现对象,通过该对象调用接口方法。

package main

import "fmt"

// MilkyTea 定义结构体 奶茶
type MilkyTea struct {
	ingredients string
	price       float64
	heat        bool
	sweetLevel  float32
}

// 方法定义
func (tea MilkyTea) getIngredients() string {
	return tea.ingredients
}

func (tea MilkyTea) setIngredients(ingredients string) {
	tea.ingredients = ingredients
}

func (tea MilkyTea) getPrice() float64 {
	return tea.price
}

func (tea MilkyTea) setPrice(price float64) {
	tea.price = price
}

func (tea MilkyTea) getHeat() bool {
	return tea.heat
}

func (tea MilkyTea) setHeat(heat bool) {
	tea.heat = heat
}

// MilkTeaFactory 定义接口
type MilkTeaFactory interface {
	generateMilkTea(ingredients string, price float64, heat bool, sweetLevel float32) MilkyTea
}

type MilkTeaBaseFactory struct {
	factoryName           string
	factoryGeneratingPool []MilkyTea
}

func (factory MilkTeaBaseFactory) generateMilkTea(ingredients string, price float64, heat bool, sweetLevel float32) MilkyTea {
	milkTea := MilkyTea{heat: heat, ingredients: ingredients, price: price, sweetLevel: sweetLevel}
	//这里差多线程的一些判断
	factory.factoryGeneratingPool = append(factory.factoryGeneratingPool, milkTea)
	fmt.Println(milkTea.getIngredients())
	return milkTea
}

func main() {
	factory := MilkTeaBaseFactory{factoryName: "factory", factoryGeneratingPool: make([]MilkyTea, 5)}
	var interfac MilkTeaFactory
	interfac = factory
	interfac.generateMilkTea("apple,juice,water", 19.8, false, 1.0)
}

输出如下:

apple,juice,water

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值