我想问下关于interface 的问题
Go 的实现类是不是不会强制 实现类 实现 接口中的所有方法?
可以看到 我下面的方法 GoPragrammer 中只实现了 Programmer 中的writeCode 方法, 并没有实现 studyCode,
但是GoProgrammer 中这个类是没有报错, 是可以继续执行的.
1. 那么我的理解就是GoPragrammer 中并不属于 Programmer的实现类 只有当GoPragrammer 实现了 studyCode 的时候 才算 实现类
那么问题来了, 那go的接口意义在哪? 反正没有强制实现,那自己的类完全可以自己玩啊.
```
type Code struct {
code string
}
//定义一个接口
type Programmer interface {
//定义接口的方法
writeCode() Code
studyCode() Code
}
type GoPragrammer struct {
}
func (p *GoPragrammer) writeCode() Code {
code := Code{
code: "Go",
}
return code
}
func TestInterface(t *testing.T) {
goPragrammer := new(GoPragrammer)
t.Log(goPragrammer.writeCode().code)
}
```
Go 中如果你的`struct`没有实现一个接口中的所有的方法的话是无法被认为实现了那个接口的.
eg: https://goplay.space/#pSJdNraievM
#7
更多评论
晕, 这个问题很奇特,
你为啥不试试定义成
```go
var goPragrammer Programmer
goPragrammer = new(GoPragrammer)
```
看看会发生什么?
#1
golang没有类。
接口这个概念也不是golang独有的
接口的意义在于提供给别人来使用,让接受数据的一方不需要知道传入参数的具体类型就能进行操作。
#2