【GO之初体验】GO中面向对象的特点

作为一门没有对象的OOP,如果有OOP的经验的话,GO上手应该是很快的。今天刚好在学习GO,说说我踩的坑吧


————————————————————————
Example:

package main

import "fmt"


//动物类
type Animal struct{
        Name string
	Legs int
}

//狗类
type Dog struct{
        Animal//继承Animal类
	Tail int
}

//狗类下的方法
func(d Dog) Speak(){
	fmt.Println("汪汪汪!")
}

//猫类
type Cat struct{
        Animal//继承Animal类
	eyes int
}

//猫类下的方法
func(c Cat) Speak(){
	fmt.Println("喵~~~")
}

//所有拥有Speak()方法的接口
type SpeakAnimal interface{
	Speak()
}

func main() {
	//实例化对象,并显示申明类中所有变量
	dog := Dog{Animal{"dahuang",4},1}
	cat := Cat{Animal{"xiaohua",4},2}
	
	var s SpeakAnimal
	
	s = dog
	s.Speak()
	
	s = cat
	s.Speak()
}




GO的结构特性:导包,类型,类型的方法,函数

1.type
  • 类的关键字由class变为了type
  • 省略了修饰符,由类名的首字母大小写决定访问权限
  • 在类结构体中包含了所有类的成员变量

2.func

func(type Type) Method(int in) int out {
return in
}

  • func(可指定为类的方法) 方法名(传入参数) 返回值
  • 在go里只有类的方法才叫方法,没有指定类的叫函数。
  • 需要特殊注意的是返回值可有多个
  • 注意方法的参数的值传递与引用传递的区别

3.继承
  • Dog类和Cat类都继承了Animal类,同时它们都具有了Animal类的属性和方法。
  • 一般情况下,子类的对象可以调父类的属性,但是如果子类和父类中有重名的属性的话,需要显式调用。(子类.父类.父类的属性)
  • 尽量不要继承!

4.interface
  • interface由方法集所构成
  • GO中interface是隐式声明的,只要包含了接口中的所有方法,就实现了此接口
  • 所以每一个type都隐式的实现了一个空interface,因为空interface的方法集为空


资料:
Go语言与面向对象编程
Go语言interface详解
go是面向对象语言吗?
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值