Skip to content

Commit 51aeac3

Browse files
authored
接口章节 补充编译无法通过的原因
补充编译无法通过的原因
1 parent f4422fe commit 51aeac3

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

golang/interface.md

+6-3
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,11 @@ func (a2 *A2Instance) Printf() int {
311311
// 调用接口的方法
312312
a.Println()
313313
```
314-
315-
如果结构体没有实现该方法,将编译不通过,无法编译二进制。
314+
a = &A1Instance{Data:"i love you"}而不是 a = A1Instance{Data:"i love you"}
315+
指针类型的receiver 方法实现接口时,只有指针类型的对象实现了该接口。
316+
对应上面的例子来说,只有&A1Instance实现了Println接口,而A1Instance根本没有实现该接口
317+
当写成a = A1Instance{Data:"i love you"}
318+
结构体没有实现该方法,将编译不通过,无法编译二进制。
316319

317320
当然也可以使用断言和反射来判断接口类型是属于哪个实际的结构体 `struct`
318321

@@ -326,4 +329,4 @@ func (a2 *A2Instance) Printf() int {
326329
fmt.Println(reflect.TypeOf(a).String())
327330
```
328331

329-
`Golang` 很智能判断结构体是否实现了接口的方法,如果实现了,那么该结构体就是该接口类型。我们灵活的运用接口结构的特征,使用组合的形式就可以开发出更灵活的程序了。
332+
`Golang` 很智能判断结构体是否实现了接口的方法,如果实现了,那么该结构体就是该接口类型。我们灵活的运用接口结构的特征,使用组合的形式就可以开发出更灵活的程序了。

0 commit comments

Comments
 (0)