Go的接口类型

本文深入探讨Go语言的接口类型,包括接口的实现类型、如何判定方法实现接口、接口变量的静态类型与动态类型、赋值过程中的值传递特点,以及接口间的组合。强调鸭子类型概念和接口零值为nil的特性,提倡使用小接口进行组合以增强程序的灵活性。
摘要由CSDN通过智能技术生成

Go的接口类型

一、接口类型

1.1 接口的实现类型

对于任何数据类型,只要它的方法集合中完全包含了一个接口的全部特征(即全部的方法),那么它就一定是这个接口的实现类型。

这是一种无侵入的接口实现方式,这种方式还有一个专有名词,叫“Duck typing”,中文常译做鸭子类型。

“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

1.2 判定实现了接口类型的某个方法

怎么判定一个数据类型的某一个方法实现的就是某个接口类型中的某个方法呢?

  • 两个方法的方法签名要完全一致;
  • 两个方法的名称要一模一样;
package main

import "fmt"

type Pet interface {
   
	SetName(name string)
	Name() string
	Category() string
}

type Dog struct {
   
	name string
}

func (dog *Dog) SetName(name string) {
   
	dog.name = name
}

func (dog Dog) Name() string {
   
	return dog.name
}

func (dog Dog) Category() string {
   
	return "dog"
}

func main() {
   
	// 示例一
	dog := Dog{
   "little dog"}
	_, ok := interface{
   }(dog).(Pet)
	fmt.Printf("dog 实现了 Pet类型: %v\n", ok
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值