1个回答

test
2024-07-11
解释
Go 语言是隐式接口,实现接口的所有方法就实现了接口,而无需在结构体定义中指明:
// 无需类似这样显式声明实现 Fruit 接口(以下非合法语法)
type Apple struct implements Fruit {
name string
}
且 Go 在编译过程中对接口是按需检查的,即你使用接口时,才检查你是否实现了接口(比如声明函数参数、变量赋值时)。
你列出的 main1
中只是一个对结构体的使用,不涉及到接口检查;而 main
中将 f
的类型定为接口 Fruit
,会进行接口检查。
结论
- 结构体
Apple
实现了Fruit
接口; main1
中未涉及到对接口的检查,main
中涉及到了对接口的检查。
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容