Go接口特性

type Sayer interface {
 Say() string
}

type Cat struct {

}

func (c Cat) Say() string {
 return "miaow"
}

type Dog struct {

}

func (d Dog) Say() string {
 return "woof woof"
}

type Horse struct {

}

func (h Horse) Say() string {
 return "neigh"
}

func TestSay(t *testing.T) {
 c := Cat{}
 // t.Log("Cat say:", c.Say())
 //
 d := Dog{}
 // t.Log("Dog say:", d.Say())

 h := Horse{}

 animals := []Sayer{c, d, h}
 for _, a := range animals {
  t.Log("say:", a.Say())
 }
}

posted @   技术颜良  阅读(30)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2019-11-29 Centos7下使用Ceph-deploy快速部署Ceph分布式存储-操作记录
2019-11-29 Nginx + Lua 搭建网站WAF防火墙
2018-11-29 kubernetes控制器之DaemonSet
2018-11-29 搞定 Kubernetes 基于flannel 的集群网络
2018-11-29 Hadoop+HBase+Spark+Hive环境搭建
2018-11-29 部署高可用keepalived组件
点击右上角即可分享
微信分享提示