ch7/ch7-03 #164
Replies: 6 comments 5 replies
-
这书写的是给什么人看的?作为学Go一年的新手表示,真是难 |
Beta Was this translation helpful? Give feedback.
-
为了解决 声明但不使用 的情况, 引入了 空白描述符 _ var _ TheInterface = *CustomStruct{} 最后官方提醒, 这种 奇怪 行为不要乱用, 只用在 那些不能 静态检查 的对象上面。 这书写得真无语,看着又绕,又费劲 |
Beta Was this translation helpful? Give feedback.
-
越看越费劲,越写越绕,就不能简单直接点?电脑不也就只能处理0和1么,这书写得,不绕死你难受 |
Beta Was this translation helpful? Give feedback.
-
这书写的真的烂,原本就这样。服了,看机工社的也是不知道在说什么 |
Beta Was this translation helpful? Give feedback.
-
接口实现是隐式的 Go语言中,一个类型只要拥有接口所要求的所有方法,就“自动”实现了这个接口,无需显式声明。 例如,os.File具有Write、Read和Close方法,因此它实现了io.Writer、io.Reader和io.Closer等接口;而bytes.Buffer虽然实现了Write和Read,但没有Close方法,所以它不实现io.ReadWriteCloser中的Close部分。 方法接收者的影响 有些方法使用值接收者,有些方法使用指针接收者。如果一个方法是用指针接收者定义的,那么只有对应的指针类型才能直接调用这个方法。 例如,假如IntSet类型的String方法定义在IntSet上,那么只有IntSet类型才能实现fmt.Stringer接口,而IntSet(非指针)则不行。 接口封装了具体类型 当一个具体类型被赋值到接口变量时,接口只暴露出它声明的方法,而不包括类型的其他方法。 例如,虽然*os.File拥有很多方法,但如果将它赋给io.Writer类型变量,则只能调用Write方法,其他方法(如Close)无法通过这个接口访问。 空接口(interface{})的特殊性 空接口没有任何方法要求,因此任何类型都自动实现了空接口。 这使得空接口可以用来接受任意类型的值,例如在fmt.Println函数中,就可以接受任何类型的参数。 接口组合和灵活性 接口可以组合出更复杂的行为描述,比如定义既有读写功能的io.ReadWriter,或者进一步组合出还包含关闭功能的io.ReadWriteCloser。 在实际设计中,我们可以基于具体类型的共同行为划分出不同的接口,方便程序针对相似功能进行抽象和调用。 |
Beta Was this translation helpful? Give feedback.
-
所以,为什么不带着先写一个简单的接口,这一股脑拿上来,看的好迷啊 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
ch7/ch7-03
中文版
https://gopl-zh.github.io/ch7/ch7-03.html
Beta Was this translation helpful? Give feedback.
All reactions