golang 面向对象

type Animal interface {
	// 这里可以嵌入(或者说组合)别的接口
	speak()
	big() bool
}

// struct 中只定义成员变量 interface 只定义方法
// 在外面定义了interface 中所有的方法后就可看做实现了interface这就是ducktype
// duck_type 实现了这个接口的所有方法就是这个接口(走起来是鸭子叫起来是鸭子那就就是鸭子)
type Bird struct {
	words string
	isBig bool
}

func (bird Bird) speak(){
	fmt.Println(bird.words)
}
func (bird Bird) big() bool{
	return bird.isBig
}

func talk(animal Animal) {
	animal.speak()
}
func main() {
	var bird Animal
	bird = Bird{"I'm a bird", false}
	talk(bird)
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Golang 是一门支持面向接口编程的语言,这意味着在 Golang 中,我们可以通过定义接口来实现多态性。具体来说,我们可以定义一个接口类型,然后让多个不同的类型实现该接口,从而使它们可以被视为同一类型,从而实现多态性。 在 Golang 中,接口是一组方法的集合,这些方法定义了该接口所代表的对象应该具有的行为。任何类型只要实现了该接口中定义的所有方法,就可以被视为该接口类型的实例。 下面是一个简单的例子,展示了如何定义一个接口和实现该接口: ```go package main import "fmt" // 定义一个接口 type Animal interface { Speak() string } // 定义一个结构体类型 type Dog struct { Name string } // 实现 Animal 接口中的 Speak 方法 func (d Dog) Speak() string { return "Woof!" } func main() { // 创建一个 Dog 类型的实例 d := Dog{Name: "Fido"} // 将该实例赋值给 Animal 类型的变量 var a Animal = d // 调用 Animal 接口中的 Speak 方法 fmt.Println(a.Speak()) // 输出: Woof! } ``` 在上面的例子中,我们定义了一个 Animal 接口,它只有一个方法:Speak。然后我们定义了一个 Dog 结构体类型,并实现了 Animal 接口中的 Speak 方法。最后,我们创建了一个 Dog 类型的实例,并将其赋值给 Animal 类型的变量。由于 Dog 类型实现了 Animal 接口中的所有方法,所以它可以被视为 Animal 类型的实例,从而实现了多态性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值